汉字到底以几进制存储?

课本上是这么说的,所有的数据都是以二进制存储,包括汉字,计算机在处理汉字时也要转换成二进制,但汉字与其他字符不同,是以机内码的形式存储在计算机中的,而机内码又是由0和1组成的。机内码用16进制表示,每个汉字的机内码占两个字符。

可是这些话不是自相矛盾吗?这都把我绕晕了,如何汉字是以二进制形式存储在计算机中,用机内码表示,那机内码不应该是二进制吗?怎么就又变成了16进制表示了????

    汉字在计算机中的存储方式是采用Unicode编码,Unicode编码是一种字符集,它为每个字符分配了一个唯一的数字编号,这个编号被称为Unicode码点。Unicode码点的范围是0x000000到0x10FFFF,共有1,114,112个码点。

    在计算机中,Unicode编码通常使用UTF-8、UTF-16或UTF-32等编码方式进行存储。UTF-8编码是一种变长编码方式,使用1到4个字节来表示一个字符,其中汉字通常使用3个字节来表示。UTF-16编码是一种定长编码方式,使用2个字节来表示一个字符,其中汉字通常使用2个字节来表示。UTF-32编码是一种定长编码方式,使用4个字节来表示一个字符,其中汉字也使用4个字节来表示。

    因此,汉字在计算机中的存储方式并不是以固定的进制进行存储,而是采用Unicode编码,并使用不同的编码方式进行存储。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-05-05
存储和表达是两个场景,数据存储从根本上说都是二进制的,不管是内存还是硬盘,存储信息最基本的单元都是许许多多的“位”(bit)就是0、1。
编码是用来表达信息的,表达信息的最基本单元是“字节”,1字节是8位。换句话说,以目前计算机系统设计,小于7位的数据只有逻辑意义(比如电路通断等等低层信息),没有编码意义(字符、文件、图像等高层信息)。十六进制数等于4个二进制数(4bit)。因此1字节数据(8bit)可以表达为2个十六进制数。
英文字符数字标点用8位的普通单字节编码(2个十六进制数,8bit,1字节这三者可以粗略认为是一回事)就可以囊括;汉字数量大,常用字必须用双字节编码(4个十六进制数,16bit,2字节这三者可以粗略认为是一回事)囊括。
之所以书本中强调汉字是使用十六进制表达,是因为在这个语意下,4个十六进制数就不能单纯的看成16位二进制数了,并不是所有任意组合的4个十六进制数(16位二进制数)都能成为汉字编码;汉字只能占据某一段或几段十六进制号码段,其余的号码段是被定义为其他文字或符号的。你细细体会,说“汉字=经过编码的4个十六进制数”和说“汉字=16位二进制数”很明显是不同的,后者的范围就太大了。
希望回答对你有帮助。