进制相关总结

进制

1.原码,反码和补码

1)产生原因

先看一下单位

1KB = 1024B

1B = 8bit(位)

如果用两个字节(2B)表示一个整数,那么

十进制 1 –> 二进制表现 0000 0000 0000 0001

十进制 2 –> 二进制表现 0000 0000 0000 0010

那么怎么表示一个负数呢?

十进制 -1–> 二进制表现 1000 0000 0000 0001

以上就是正数和负数的二进制表现形式.

但是引发了一个问题

1 + (-1)

0000 0000 0000 0001

1000 0000 0000 0001

1000 0000 0000 0010 –> 结果是 -2

纳尼,这是什么情况(稍安勿躁)

所以为了解决以上的问题,产生的原码,反码和补码

2)规则

正数

原码 == 反码 == 补码

也就是说正数的原码,反码和补码都一样

负数

原码 == 正常的二进制表现形式
反码 == 原码的符号位不变,其他位取反
补码 == 反码 + 1

以 -1 为例

原码 1000 0000 0000 0001
反码 1111 1111 1111 1110
补码 1111 1111 1111 1111

同样的负数的补码转原码

补码符号位不变,其他位取反,然后+1

eg : 以 -9 为例

原码转补码

原码 1000 0000 0000 1001</br>
反码 1111 1111 1111 0110</br>
补码 1111 1111 1111 0111</br>

补码转原码

1111 1111 1111 0111(补码) --> 1号值
1000 0000 0000 1000(符号位不变,其他位取反) --> 2号值
1000 0000 0000 1001(2号值+1后的结果) --> -9的原码