【问题标题】:What is the Significance of clearing/setting/toggling the Most Significant Bit (MSB) or Least Significant Bit (LSB)?清除/设置/切换最高有效位 (MSB) 或最低有效位 (LSB) 的意义是什么?
【发布时间】:2015-11-07 01:15:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: bit-manipulation


    【解决方案1】:

    一个真实世界的例子:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        来自维基百科:
        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)。

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

        【讨论】:

          猜你喜欢
          • 2014-05-20
          • 1970-01-01
          • 1970-01-01
          • 2010-10-19
          • 2020-09-07
          • 2016-07-11
          相关资源
          最近更新 更多