-
两个正数相加
两个正数相加直接进行,注意两个数位数要保持一致 -
正数与一个比它小的负数相加
例如,+9和-4相加。记住:-4要用补码形式表示,所以+4(00100)必须转换成-4(11100)。
在这种情况下,加数的符号位是1。注意符号位也参加了加法运算的过程。事实上,在加法的最高位产生了一个进位。这个进位是要被忽略的,所以最后的和为00101,等于+5。 -
正数与比它大的负数相加
这里和的符号位是1,所以是个负数。因为和是负数,它是补码形式,所以最后的4位1011,其实是和的补码。为了求出和数的真实值,必须对11011求相反数(2的补码);结果00101=+5。所以11011表示-5。 -
两个负数相加
-
这里你可能有一个疑问,为什么负数要用补码表示呢?
可以看一下这篇博客
https://www.cnblogs.com/lihaichao/p/9627405.html
https://blog.csdn.net/gaoshuang5678/article/details/50554143 -
深入理解
由于计算机需要用最高位来表示正负,在求补码的时候这一位是不动的。
比如-1 二进制原码是1 0001,符号位1不动,对0010取反得1110,再加1得到补码1111,然后加上符号位1 1111,这就是负数的补码的计算。
再来一个栗子,-15的原码 1 1111,对1111取反得0000,再加1得到0001,带上符号位 1 0001。
这也是为什么没负0 负0原码1 0000, 0000取反1111加1得到 11111,位数溢出了。
这个符号位让我想起了Java数据类型的取值范围,下一篇博客要了解一下
算术运算二之补码系统的加法
最新推荐文章于 2024-01-26 15:45:51 发布