为什么汉字字节的每个字节最高位为一
完全想不通啊
有没有好人帮忙点一下
谢谢啊
二楼学术不精啊,字节最高为1跟你得编码类型有关,我们用的系统一般都是UTF8,这里为了标识它们是UTF-8编码下一个字符的后续字节
这样可以用来区分单字节字符和多字节字符。由于单字节字符只占用一个字节,它们的最高位是0,与多字节字符的第一个字节的最高位不同。
西文 26 个大小写字母,数字,标点符号等总共只有 60 多个,一般西文用一个字节表示,这个字节是小于 128 的数
中文简体有 6700 多个汉字,用一个字节无法描述,一般用 2 个字节
为了区别西文,我们将汉字两个字节的最高位置 1,这就是 GB2312汉字编码
目前使用很多生僻的姓名,地名,一些繁体字,GB2312 就无法满足了
为了描述更多的汉字,出现个GB18030(GBK),其中的双字节编码中汉字只有第一个字节高位置 1 这样GBK 就能描述2万多个汉字信息
试炼中文起止字符“一、龥”的十六进制字符串代码运行效果截屏图片
python代码试炼中文起止字符“一、龥”的十六进制字符串
#!/sur/bin/nve python
# coding: utf-8
tip = r'常用汉字编码区间:[\u4E00-\u9FA5]'
print(f"\n{tip}")
for i in (r'\u4E00', r'\u9FA5'):
print(f"\n十六进制数“{i[2:]}”的二进制码:{bin(int(i[2:], 16))} ,十进制值:{int(i[2:], 16)};")
汉字编码多种多样,您这样子问,真的不是很好回应😭😭。我给出了用得最多的utf-8编码规则。如不是您要的结果,您可以点击链接查阅汉字编码百科词条。
早期,是为了适应那些西文软件,因为ascii实际上低位是0,也就是说数字字母都只用了0-127的编码,因此中文用1就可以和西文混合用了。
但是实际上这个方法不完美,因为扩展ascii高位也是1,扩展ascii中包括了制表符号,这些符号被dos软件用来绘制窗口变线等。
这是很久很久以前的往事了。