清除/设置/切换最高有效位(MSB)或最低有效位(LSB)的意义是什么?

时间:2015-11-03 06:47:31

标签: bit-manipulation

操纵(清除/设置/切换)MSB或LSB的实际用途是什么?

根据定义,MSB是最左边的位,贡献最大值,LSB是最右边的位,贡献最小值。

为什么要操纵这些位?我们可以通过操纵这些位来实现什么?

3 个答案:

答案 0 :(得分:1)

如果您使用整数值作为标志结构或包含位域,那么这就是原因。单独调整MSB或LSB的一个原因可能是设置一个特殊标志,您知道该位将被其他方式使用,例如在某些ISA中,所有存储器地址(用于加载/写入)必须在字边界上对齐(通常是字长是32位)这意味着指针的最后几位是完全无关紧要的,可以由应用程序或系统使用,这同样适用于高位 - 但仅限于某些情况。

其他原因包括对IEEE-754号码进行快速算术运算:例如:切换符号位比通过FPU更快。

答案 1 :(得分:1)

来自维基百科:
MSB
有符号的幅度表示

该表示也称为“符号幅度”或“符号和幅度”表示。在这种方法中,表示数字符号的问题可以是分配一个符号位来表示符号:将该位(通常是最高有效位)设置为0是针对正数还是正数零,并将其设置为1是对于负数或负零。数字中的其余位表示幅度(或绝对值)。因此,在仅具有7位(除了符号位)的字节中,幅度可以在0000000(0)到1111111(127)的范围内。因此,一旦添加符号位(第八位),数字范围从-12710到+12710就可以表示。这种表示的结果是有两种方式来表示零,00000000(0)和10000000(-0)。这样,-4310以8位字节编码为10101011.

<强> LSB
如果数字甚至略有变化,则最低有效位具有快速变化的有用属性。例如,如果将1(二进制00000001)添加到3(二进制00000011),则结果将为4(二进制00000100),并且三个最低有效位将更改(011到100)。相比之下,三个最高有效位(MSB)保持不变(000到000)。

在伪随机数生成器,散列函数和校验和中经常使用最低有效位。

答案 2 :(得分:1)

一个真实世界的例子: