4位字符编码的最大值是多少?
4位字符编码的最大值到底是多少?
4位字符编码的最大值取决于“位”的定义——是4个二进制位4bit,还是4位十六进制数16bit,即2字节?前者最大值是15,后者是65535;若误将“4字节”当“4位”,UTF-8编码最大值可达1114111。
先搞懂“4位”到底指什么?
“位”bit是计算机最小单位,1字节=8bit。但“4位字符编码”的“位”可能有两种含义:
4个二进制位4bit:纯数值上的“4位”,如早期简单编码如BCD码低4位;
4位十六进制数:1位十六进制=4bit,4位=16bit2字节,常见于Unicode等编码如UCS-2用4位十六进制表示。
不同“4位”定义下的最大值
4bit二进制编码纯数值
4bit能表示的范围是0~2⁴-1,即0~15。
二进制形式:11114个1;
十进制:15;
十六进制:F。
举例:4bit符号整数的最大值就是15。
4位十六进制编码16bit
4位十六进制数=16bit2字节,每位可表示0~F15,整体范围0000~FFFF。
计算:F×16³ + F×16² + F×16 + F = 15×4096 + 15×256 + 15×16 + 15 = 65535;
十进制:65535;
举例:Unicode UCS-2编码固定2字节的最大值就是FFFF对应字符“”,但实际多为未定义字符。
实际编码中“4位”的常见场景
ASCII编码与“4位”关,但有“高低4位”
ASCII是7bit编码最大值127,扩展ASCII是8bit最大值255。虽不是“4位编码”,但8bit常分“高4位”和“低4位”:
高4位:最大值1111二进制=F十六进制;
低4位:同上,最大值F;
如字符“ÿ”扩展ASCII的8bit是11111111,高低4位均为F。
别混淆“4位”和“4字节”!UTF-8的4字节编码
有人误将“4字节”称为“4位”1字节=8bit,4字节=32bit。UTF-8用1~4字节编码,4字节编码范围是U+010000~U+10FFFF:
最大值:U+10FFFF十进制1114111;
二进制:11110100 10001111 10111111 10111111具体编码规则较复杂;
意:这是“4字节”而非“4位”,术语别搞错!
快速计算编码最大值的公式
论n位bit编码,最大值=2ⁿ - 1:
4bit:2⁴ - 1 = 15;
16bit4位十六进制:2¹⁶ - 1 = 65535;
32bit4字节:2³² - 1 = 4294967295但UTF-8 4字节因编码规则限制,实际小于此值。
“4位字符编码的最大值”核心看“位”的定义:
4bit二进制位→ 15;
4位十六进制16bit→ 65535;
若误指“4字节”,UTF-8最大值为1111411。
记牢公式2ⁿ - 1n为bit数,决90%的编码最大值问题!