先看第一行:
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^4 * 2^7
即16 * 2^7
),后者是15 * 2^7
种取值,对不上了。110x xxxx
和10xx xxxx
多出来了一个2^7
的范围,这还刚好可以把 第一行的编码给编进去,这样的话,就刚好一一对应了,但是第一行的编码不是只能用0xxx xxxx
来编码吗?这不就感觉很奇怪了。这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.