为什么Byte数据类型可存储三位数字却仅占用1字节?
核心差异:数值存储 vs 字符编码存储
你出现疑惑的核心原因是混淆了两种完全不同的计算机存储逻辑:
- 你查到的Byte类型说明,描述的是作为二进制数值类型的Byte:
Data Type: Byte
Size: 1 byte/ 8 bits
Info: An integer between -128 and 127
这种场景下Byte是用来直接存储整数值的,8位有符号二进制采用补码规则存储时,最高位为符号位,剩余7位存储数值大小,取值范围刚好是-2^7 ~ 2^7-1,也就是-128到127,全程只需要8bit/1字节就能完成存储。比如整数127对应的二进制存储内容为01111111,仅占1字节。
- 你在转换工具里测试的是ASCII字符编码的存储逻辑:
你输入的"127"是三个独立的文本字符,分别是字符'1'、字符'2'、字符'7',每个ASCII字符固定占1字节,三个字符自然需要3字节/24bit存储,你得到的00110001 00110010 00110111就是三个字符各自的ASCII编码值,和直接存储整数值127完全是两种场景。
简单来说:如果要存的是「127这个整数的数值」,用Byte类型只需要1字节;如果要存的是「人能看懂的'1'、'2'、'7'三个文本字符」,才需要3字节。
内容的提问来源于stack exchange,提问作者001Wolf
相关产品推荐
相关产品推荐

