我正在阅读Modern C(版本 2018年2月13日。),并在第42页上说
它表示索引为4的位是最低有效位。索引为0的位不是最低有效位吗? (有关MSB的相同问题。)
哪个是对的?正确的术语是什么?
答案 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是最右边的位。后一个定义更有用,我真的认为这本书是错误的。