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%的编码最大值问题!

延伸阅读: