位掩码

位掩码(BitMask)是 “位” (Bit) 和 “掩码” (Mask) 的组合词。“位”指代着二进制数据当中的二进制位,而“掩码”指的是一串用于目标数据进行按位操作的二进制数字。组合起来就是“用一串二进制数字(掩码)去操作另一串二进制数字”的意思。 掩码就是一串二进制代码对目标字段进行位与运算,屏蔽当前的输入位,最终得到一个合理的需求。 场景应用 权限 假设系统中有4中权限: 增删改查,使用位运算来表示权限,定义四个变量如下 Insert = 1 // 0001 Delete = 2 // 0010 Update = 4 // 0100 Select = 8 // 1000 假设初始权限为 0000 如果想给用户增加权限,则使用 | 或运算 给用户增加 Insert 权限 0000 | 0001 = 0001 给用户同时增加 Insert 和 Delete 权限 0000 | 0001 | 0010 = 0011 此时获取到的 0011 十进制为 3 则怎么知道用户拥有哪些权限呢? 只需要采用 & 运算 是否有 Insert 权限 b0011 & b0001 = b0001 = 1 有权限 是否有 Delete 权限 b0011 & b0010 = b0010 = 2 有权限 是否有 Update 权限 b0011 & b0100 = b0000 = 0 无权限 是否有 Select 权限 b0011 & b1000 = b0000 = 0 无权限 删除权限 如用户有 Insert 和 Delete 权限,现在需要删除 Insert 权限 ...

April 9, 2026 · 2 min · Theme PaperMod

字符编码

1. 字节 字节是计算机中存储数据的最小单元,一个字节有 8 个位(即二进制位,也叫 bit),也可以表示 0~255 之间的任何一个数(即二进制的 0000 0000 到 1111 1111 之间)。可以用字节表示任何东西,如数字、字符、图像、音乐等,这取决于你如何解释这个字节。 2. ASCII 字符集 在标准 ASCII 码中,用一个字节来表示不同的字符,字节的最高位(也就是二进制代码的左边第一位)被用来做奇偶校验,所以只剩下 7 个位用来表示不同的字符,这样能表示的字符范围就变成了 0~127 之间。其中 0~31、127 这些数值被定义为控制字符,他们是不能显示的。32~126 这些数值被定义为下面的字符: !"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy 如果要在计算机中存储 ASCII 字符串,只需要将这些字符所对应的数值(用来表示字符的数值也叫做码点)按字节依次存放即可,读取的时候也只要按字节依次读出即可。ASCII 字符集无法表示汉字。 3. Latin1 字符集 如果将标准 ASCII 码的最高位不用作奇偶校验,而也用来表示字符的话,那么就可以表示 256 个字符,在 ASCII 的基础上多出了 128 个字符,这个字符集叫做 Latin1 字符集,Latin1 是 ISO-8859-1 的别名,也可写作 Latin-1。其中 0~127 这些数值的定义与 ASCII 字符集一样,128~159 这些数值被定义为控制字符,160~255 这些数值被定义为下面的字符: ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ 如果要在计算机中存储 Latin1 字符串,只需要将这些字符所对应的码点(码点就是字符所对应的数值)按字节依次存放即可,读取的时候也只要按字节依次读出即可。Latin1 字符集无法表示汉字。 4. ANSI 字符集 由于 ASCII 字符集或 Latin1 字符集只能表示有限的字符,对于亚洲字符(例如中文、日文、韩文)则无法表示,所以为了使计算机支持更多语言,出现了 ANSI 字符集,ANSI 字符集中 0~127 这些数值的定义与 ASCII 字符集一样,而 128~255 这些数值被定义为双字节字符的一个编码,即“用其中的 2 个数值来表示 1 个字符”,这样的双字节可以表示的字符数量就达到了 1.6 万多个。 ...

April 9, 2026 · 4 min · Theme PaperMod