采用补码的其中一个原因是为了统一正0和负0

我们都知道计算机中的数据是用 补码 表示的。相信大家对他们的概念都比较熟悉了,现在说一下需要注意的几个地方。 我们暂且用 8 位表示。
   1、原码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。正是由于原码有 正负零之分,给我们的运算带来了很大的麻烦。所以才引进 反码。

   2、反码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。
         正数的反码与原码相同。负数的反码,首位(符号位)不变,其他位取反。
       例: +0 反码是:00000000
               -0 反码是:11111111 (符号位是1,其他位取反)

   3、补码的表示范围是 -128 ~ +127 共256个。
      例:+0 的补码:00000000
               -0 的补码:00000000 (反码 加 1)

             例: -127 的补码 怎么计算呢?
                  -127 原码是 11111111 ---> 反码为 10000000 ---->补码为 10000001 。即 在计算机中, 10000001 就表示 -127。

   4、在这 8 位系统中,-128 没有相对应的原码和反码,它在计算机里面的表示形式是:10000000
      所以,计算机为32位的时候,10000000000000000000000000000000 表示 -2(31)。2的 31 次方。

   5、对于编程语言中的 移位 运算,比如一个32 位的 int 型左移 33 位,这样的话我们可以取模运算。即 对于 n>32的数,语言规定的就是 实际移位数为 (n-32)。比如左移 33 位,实际上和左移 1 位 是相同的。

采用补码的其中一个原因是为了统一正0和负0

上一篇:(转)“拿人钱财,与人消灾”,这才是员工含义的本质


下一篇:HBase MultiVersionConsistencyControl