最低有效位(LSB)是否始终是“第一”位?

时间:2018-09-04 07:52:29

标签: c bit

我正在阅读Modern C(版本 2018年2月13日。),并在第42页上说

Image captured on page 42 of the book

它表示索引为4的位是最低有效位。索引为0的位不是最低有效位吗? (有关MSB的相同问题。)

哪个是对的?正确的术语是什么?

3 个答案:

答案 0 :(得分:6)

他们对“最高有效位”和“最低有效位”的定义具有误导性:

8 bit Binary number : 1 1 1 1 0 0 0 0
      Bit number      7 6 5 4 3 2 1 0
                      |     |       |         
                      |     |       least significant bit
                      |     |
                      |     |
                      |     least significant bit that is 1  
                      |
                      most significant bit that is 1 and also just most significant bit

答案 1 :(得分:3)

他们使用的是LSB和MSB的异常定义,该定义仅引用设置为1的位。因此,在240的情况下,第一个1位是b 4 ,而不是b 0 ,因为b 0 到b 3 均为0

我不确定为什么书认为LSB / MSB的定义有用。尽管它确实在浮点数中起作用,但对于整数来说通常并不有趣。浮点数按比例缩放,因此1以上的整数会移走低阶零位,并且指数会增加以弥补这一点(相反,小数的分数会移走其高阶位,而指数则是减小)。

答案 2 :(得分:3)

这本书的定义与常见/典型/主流/正确用法不符。参见Wikipedia, for instance

  

在计算中,最低有效位(LSB)是给出单位值的二进制整数中的位位置,即确定该数字是偶数还是奇数。

另一方面,这本书似乎只考虑了1位,因此在一个表示数字16的8位字节中,我们可以这样写:

00010000

为1的位具有索引4(在本书的注释中为 b4 ),然后声称该特定数字的LSB为4。

正确的定义只是使用LSB来表示其值为1的位,即“单位”,并且LSB是最右边的位。后一个定义更有用,我真的认为这本书是错误的。