
先看第一行:
0xxx xxxx(这里用 x 来代表图里的_)的 7 个 bit 都可以自由变化,所以0xxx xxxx可以有 2^7 种取值。- 然后计算
0x00 ~ 0x7F这个范围内有多少种 取值,即 这两个数相减再加 1 ,那么为0x80,确实也是 2^7 。 - 所以第一行,是一一对应的。
再看第二行:
110x xxxx和10xx xxxx,总共有 11 个 bit 可以变化,所以110x xxxx和10xx xxxx可以有 2^11 种取值。- 然后计算
0x0080 ~ 0x07FF这个范围内有多少种 取值,即 这两个数相减再加 1 ,那么为15 * 2^7 - 现在前者是 2^11 种取值(即
2^4 * 2^7即16 * 2^7),后者是15 * 2^7种取值,对不上了。 - 而且现在,
110x xxxx和10xx xxxx多出来了一个2^7的范围,这还刚好可以把 第一行的编码给编进去,这样的话,就刚好一一对应了,但是第一行的编码不是只能用0xxx xxxx来编码吗?这不就感觉很奇怪了。