乐趣区

关于java:二进制-原码-补码-反码

1. 二进制概念

  1. 二进制是由 0 与 1 组成的机器码 即 01010101
  2. 二进制单位是 bit
  3. 8bit 为 1 组 , 理论状况就是数字 1 转换为二进制 00000001
  4. 二进制最高位为符号位,0 示意负数 (+),1 示意正数 (-) -1 —> 10000001 1 —–>00000001

2. 原码

  1. 原码就是符号位加上真值的绝对值.
  2. 例:

    1. [+1] 原 = 0000 0001
    2. [-1] 原 = 1000 0001

3. 反码

  1. 负数的反码是其自身;
  2. 正数的反码是在其原码的根底上,符号位不变,其余各个位取反。
    1. [+1] = [0000 0001] 原 = [0000 0001] 反
    2. [-1] = [1000 0001] 原 = [1111 1110] 反

4. 补码

  1. 负数的补码就是其自身;
  2. 正数的补码是在其原码的根底上,符号位不变,其余各位取反,最初 +1。(也即在反码的根底上 +1)
    1. [+1] = [0000 0001] 原 = [0000 0001] 反 = [0000 0001] 补
    2. [-1] = [1000 0001] 原 = [1111 1110] 反 = [1111 1111] 补

5. 原码、反码、补码 (重点 难点)

  1. 二进制的最高位是符号位: 0 正 1 负
  2. 负数的原码, 反码, 补码都一样 (三码合一)
  3. 正数的反码 = 它的原码符号位不变, 其余位取反 (0->1,1->0)
  4. 正数的补码 = 它的反码 +1, 正数的反码 = 正数的补码 -1
  5. 0 的反码, 补码都是 0
  6. java 没有无符号数, 换言之,java 中的数都是有符号的
  7. 在计算机运算的时候, 都是以补码的形式来运算的.
  8. 当咱们看运算后果的时候, 要看它的原码 (重点)
退出移动版