原反补码的相互转换、补码加减法计算规则及例题

原、反、补码

正整数的原码、反码和补码是一样的

在这里插入图片描述

对于负数:
1.2. 原码 ⇋ 反码:符号位不变,数值位按位取反
3.4. 原码 ⇋ 补码:符号位不变,数值位按位取反,末位 + 1

5. 反码 → 补码:符号位不变,末位 + 1
6. 反码 ← 补码:符号位不变,末位 - 1

补码加法公式

[x] + [y] = [x + y]

特点:不需要事先判断符号,符号位与码值位一起参加运算。符号位相加后若有进位,则舍去该进位数字。

在这里插入图片描述

补码减法公式

[x - y] = [x] - [y] = [x] + [-y]

特点:两数差的补码等于两数补码的差

由下面例题可知,最终还是转化为补码加法来计算。

在这里插入图片描述

在微机原理中,补码是处理带符号整数加减运算的重要机制。补码的引入解决了负数运算的表示问题,并简化了计算机中的算术运算。要判断补码加减法运算中是否发生了溢出,我们需要了解计算机中整数的表示范围以及溢出的定义。 参考资源链接:[微机原理课后习题答案解析](https://wenku.csdn.net/doc/3jye101x3w?spm=1055.2569.3001.10343) 首先,以一个8位的数据类型为例,正数的范围是从0到+127,而负数的范围是从-1到-128。使用补码表示时,正数的补码原码相同,负数的补码则是取其原码各位取反(即0变1,1变0)后加1。例如,-1的8位补码是***。 加法运算时,如果两个数同号且结果的符号与原来的两个数都不相同,则发生了溢出。减法运算可以看作加法运算的逆过程,即加上一个数的补码等于减去这个数。减法运算溢出的判断与加法相同。 例如,设我们有两个8位的数A和B,A的补码为***(即-2),B的补码为***(即-127),进行加法运算A+B: - 首先,将A和B进行二进制加法:*** + *** = *** - 结果的最高位为1,表示发生了进位。但因为结果超出了8位数据的表示范围,所以这是一个溢出的情况。 为了检测溢出,可以利用CPU中的溢出标志位(Overflow Flag, OF)。在加法运算中,如果OF为1,则表示发生了溢出;在减法运算中,OF为1同样表示溢出。需要注意的是,OF标志位是通过检查最高位的进位和次高位的进位来设置的。如果两个加数的符号相同,但结果的符号与原加数不同,且最高位的进位和次高位的进位相异,则OF标志位会被设置为1。 通过上述例子和解释,我们可以看出补码运算中的溢出判断是一个重要的概念。在实际应用中,掌握这一点对于编写正确的程序和避免逻辑错误至关重要。如果你希望进一步深入了解微机原理中的这些概念,可以参考《微机原理课后习题答案解析》这份资料,它将为你提供更多的例题和解析,帮助你全面掌握相关的知识。 参考资源链接:[微机原理课后习题答案解析](https://wenku.csdn.net/doc/3jye101x3w?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值