十进制(6-9)怎样用补码进行二进制运算?
收起
知与谁同
2018-07-17 20:21:20
3350
0
3
条回答
写回答
取消
提交回答
-
云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
首先,介绍一下补码的编码规则:正数的补码等于原码,负数的补码是对其原码逐位取反,但符号位除外;然后整个数加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
-
数据在内存中以补码形式存储,运算也以补码形式运算,运算结果也是补码。
最高位是符号位,正数时是0,负数时是1.以int类型2字节,16位二进制来算。
6(正数),补码=原码,即 00000110
-9(负数),原码 = 10001001 补码=11110111
相加如下(缝2进1,结果写0):
------ 0000110
--加--11110111
--------------------------
--得-- 11111101
所以结果是 11111101 ,化为原码,因为最高位是1,代表负数,所以原码为 10000011转化成十进制就是 -3
2019-07-17 22:57:52
-
正数减一个数等于加这个数的补码
6(D)=0 0110(B);9=1 1001(B)
1 1001(B)补码=1 0111(B)
所以表示方法为0 0110+1 0111=1 1101
则原码为1 0010+0 0001=1 0011(B),结果即-3
2019-07-17 22:57:52