二进制补码加减法

二进制补码加减法,第1张

是地
举例说明:
减法5-3相当于加法
5+(-3)
被加数5的二进制代码为
0000
0101
加数-3的二进制代码为
1000
0011
-3的二进制反码为
1111
1100
-3的二进制补码
1111
1101

5-3
相当于5+(-3)=0000
0101+1111
1101=0000
0010=2
其中最高位为0表示正数
最高数为1表示负数,正数的补码为其本身,负数的补码为取反加1
由此可见
减法相当于补码运算的二进制加法器

13 + 6 = 19
0000 1101 + 0000 0110 = 0001 0011
13 - 6 = 13 + (-6) = 7
0000 1101 + 1111 1010 = 0000 0111
64 - 10 = 64 + (-10) = 54
0100 0000 + 1111 0110 = 0011 0110

正数的补码是原码;负数的补码是符号位(最高位)不变,其余位按位取反加1
用补码做减法运算时,结果出现的情况有正、0、负:
结果为正或者0时,补码是原码,直接转换成10进制即可;
结果为负时,需要将结果减1再保持符号位不变按位取反。
例如:1的原码是0000
0001,补码也是0000
0001
-2的原码是1000
0010,补码是1111
1110
1-2=1+(-2)=0000
0001
+
1111
1110
=1111
1111
此时1111
1111
是1-2结果的补码,转换成原码是1000
0001,对应的十进制是-1

A-B =A+(-B) ,等于A的补码加(-B)的补码,而不是“A+(B的补码)”

计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。

尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚。"为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制1数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负)这就是机器数的原码了。

不需要转化为原码计算,在计算机中,通常总是用补码完成算术的加减法运算。其规则是:
[X+Y]补= [X]补 + [Y]补 ,[X-Y]补= [X]补 - [Y]补 = [X]补 + [-Y]补,所以你那个结果是错误的,正确的结果应该是10100001

25的补码:00011001
-36的补码:11011100
00011001
11011100 (+)
-----------------
11110101
11110101的源码:10001011(-11)
前面的兄弟用10进制都能算错,服了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12669660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存