云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
首先,介绍一下补码的编码规则:正数的补码等于原码,负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
对两个带符号数+6和+9进行减法运算
+6的补码的字节表示是:0000 0110B //正数的补码等于原码
+9的补码的字节表示是:0000 1001B //正数的补码等于原码
0 0 0 0 0 1 1 0 B
- 0 0 0 0 1 0 0 1 B
_______________________
(1)1 1 1 1 1 1 0 1 //产生借位
因为运算结果为一个字节数据(8个二进制位),最高位产生的借位丢失。即最左边的1(括号括起来的那个1)不要它 最后得 1111 1101
由于是补码运算,所以结果也是补码
将补码变成原码 逆过程哦 因为最高位是1,表示负,所以整个数减1 得 1111 1100 除了符号位 取反 1000 0011 因为1000 0011等于-3
且6-9 = -3 所以运算结果是正确的
2019-07-17 22:57:53