进制
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的原码