如果整数的最高位为零,这意味着什么?

时间:2017-05-06 01:22:57

标签: python websocket binary computer-science

在阅读WebSocket protocol standard时,我看到了以下段落:

  

"有效载荷数据"的长度,以字节为单位:如果为0-125,则为有效载荷长度。如果为126,则后面的2个字节被解释为16位无符号整数,即有效负载长度。如果为127,则后面的8个字节被解释为64位无符号整数(最高有效位必须为0)是有效载荷长度。多字节长度数量以网络字节顺序表示。

我有两个问题:

  1. 什么是"最重要的位必须是0"?我的理解是1比0更重要,因此唯一最高有效位为0的数字本身就是0。显然,这不是正确的。这究竟意味着什么?
  2. "多字节长度数量的含义以网络字节顺序表示"?我假设这是说2字节和8字节的有效载荷长度以网络字节顺序表示,但网络字节顺序是什么?

1 个答案:

答案 0 :(得分:2)

最高有效位是指位序列中代表数字的最大位值位置中的位。考虑一个四位序列。在这里,如果将最高有效位限制为0,则生成的4位数字看起来像0XXX,其中每个X可以是0或1。

在上面的文档中,当您有一个较长的有效负载,其长度需要超过2个字节(16位)来表示时,有效负载长度字段被标记为127。在这种情况下,有效负载字段中的127(或1111111)不表示长度,而是充当标志以指示以下八个字节都是有效载荷场。表明这八个字节中的最高有效位必须为0.这意味着有效载荷字段上最左边的位必须设置为0(即帧中的字节数16)。

网络字节顺序是指大端编码系统,因为它用于网络传输。