负数的二进制和十进制之间的转换

1,484 阅读2分钟

十进制负数转换为二进制

-9

9 的原码 00000000000000000000000000001001 十进制转二进制
9 的反码 11111111111111111111111111110110 二进制数按位取反
9 的补码 11111111111111111111111111110111 反码加 1 称为补码

-5

5 的原码 -- 00000000000000000000000000000101
5 的反码 -- 11111111111111111111111111111010
5 的补码 -- 11111111111111111111111111111011,即-5

二进制负数转换为十进制

  • 如果最高位为 0 则为正数,求值的时候,直接转为 10 进制即可。
  • 最高位如果为 1 代表为负数,求值的时候,需要先把二进制的值按位取反,然后加 1 得到负数绝对值(相反数)的二进制码,然后转为 10 进制,加上负号即可。比如上面的 -5 的二进制为 11111111111111111111111111111011
    • 11111111111111111111111111111011 (2) 最高位为 1 代表负数
    • 00000000000000000000000000000100 (2) 二进制的值按位取反
    • 00000000000000000000000000000101 (2) 然后加 1 得到负数绝对值(相反数)的二进制码
    • 1*2^2 + 0*2^1 + 1\*2^0 = 4 + 0 + 1 =5 (10) 转为 10 进制
    • -5 (10) 加上负号

参考