原码/补码的加减运算and溢出判断

小数点的处理:
任意一个二进制数S都可以表示为
在这里插入图片描述
研究小数点就要研究阶码E的取值:

  • 若E=0,则表示纯小数——代表定点小数;
    例0.1111表示+0.1111,1.1111表示-0.1111。
  • 若E=n,则表示纯正数——代表定点正数;
    例01111表示+1111,11111表示-1111。
  • E=m,且0<m<n,小数点在中间n个数内浮动——代表浮点数。

定点数的运算:

1、运算中,采用补码来表示定点数。

补码表示定点整数时,和原码、反码相比的优点
符号位可以跟数值位一起参加运算
可以用加法方便的实现减法运算
0的表示是唯一的
可以多表示一个最小负数

2、定点数的移位运算
当某二进制数相当于小数点做n位左移或者右移,相当于该数乘以或者除以2^n
由于机器数的字长都是固定的,当机器数左移或者右移时,都会造成n位低位或者n位高位出现空缺

逻辑移位(无符号数)
逻辑移位的规则
左移高位移丢,低位补0
右移低位移丢,高位添0

在这里插入图片描述

算术移位

  1. 当机器数为正

例:设机器字长为8,A=+26
A=+26=+11010
[A]原=[A]补=[A]反=0,0011010

移位操作机器数真值
移位前0,0011010+26
左移一位0,0110100+52
左移两位0,1101000+104
右移一位0,0001101+13
右移两位0,0000110+6

当机器数为正,三码相等,左移右移都补0 。

  • 当机器数为负

例:设机器字长为8,A=-26
[A]原=1,0011010
[A]补=1,1100110
[A]反=1,1100101

移码操作机器数真值
移位前1,0011010-26
左移一位1,0110100-52
右移一位1,0001101-13

原码——左移右移补0。

移码操作机器数真值
移位前1,1100110-26
左移一位1,1001100-52
右移一位1,1110011-13

补码——左移补0,右移添1。

移码操作机器数真值
移位前1,1100101-26
左移一位1,1001011-52
右移一位1,1110010-13

反码——左移右移都添1。

定点数的加/减运算

1、原码
  • 加法规则:先判断符号位,若相同,绝对值相加,结果符号位不变;若不同,则做减法,绝对值大的数减去绝对值小的数,结果与绝对值大的数相同。(同号求和,异号求差)
  • 减法规则:两个原码表示的数相减,首先将减数的符号取反,然后将被减数与符号取反后的减数按原码加法进行运算。(同号求差,异号求和)

例:[x]原=0.1101,[y]原=1.1001,求[x+y]原、[x-y]原?
[x+y]原:
符号位不同,做减法:
[-y]原=0.0111
在这里插入图片描述
最高数值位产生进位,所在数值位 .0100,再加上第一操作数的符号0
在这里插入图片描述
[x-y]原:
减数的符号取反,
在这里插入图片描述
因为数值最高位产生进位,结果正上溢。

2、补码
  • 补码加法
    两个数的补码相加,符号位参加运算,且两数和的补码等于两数的补码之和。
    在这里插入图片描述

例:x=+0.1011,y=-0.1001,求[x+y]补?
[x]补=0.1011 [y]补=1.0111
则:[x+y]补=0.1011+1.0111=0.0010(符号位进位舍去)
即:[x+y]补=0.0010,真值为:+0.0010。

  • 补码减法
    由于运算器仅有加法器,则:
    在这里插入图片描述

例:已知[x]补=0.0010,[y]补=1.1010,求[x-y]补?
[y]补=1.1010,则[-y]补=0.0110
则[x-y]补=0.0010+0.0110=0.1000。

3、特殊的情况——溢出(补码)
码制范围
原码-127~127
补码-128~127
反码-127~127
  • 溢出产生的原因:当两(小)数相加大于(1或)上界127,称为上溢或者正溢出,两(小)数相加小于(-1或)下界-128,称为下溢或负溢出。
  • 发生溢出,数值位扩充,数值位“跑“到符号位,然后取代符号位。导致”两正数相加等于负数,两负数相加等于正数“。
  • 计算机判断溢出的方法
    单符号——两符号相同的运算,运算结果符号相反的为溢出。
发生溢出的情况
加法:符号相同的两数相加
减法:符号不同的两数相减

双符号法(变形补码法)——检测正负溢出
特点:

  • 两位符号位要联同数值部分一起参加运算。
  • 高位符号位产生的进位直接丢弃。

原则:

  • 当两位符号位不同时,表示溢出。
  • 高位符号位永远代表真正的符号位。

正溢出
例:已知[x]补=00.1011,[y]补=00.0111,求[x+y]补=?
在这里插入图片描述

负溢出:
例:已知[x]补=11.0101,[y]补=11.1001,求[x+y]补=?
在这里插入图片描述

当两个单符号:
当两个单符号位补码进行加减运算时,若最高数值号位向符号位的进位值C与符号位产生的进位输出值S相同,则没有溢出发生;如果两个进位值不同,则发生溢出。
判断公式:C⊕S

例:已知[x]补=1.0101,[y]补=1.1001,求[x+y]补=?
在这里插入图片描述
例:已知[x]补=1.1000,[y]补=1.1000,求[x+y]补=?
在这里插入图片描述
《计算机组成原理》——唐朔飞

此次分享就到这里,欢迎大家指导指正~ 我是爱吃肉的小白yyyloki,如果你觉得不错的话点个赞👍吧!或者你可以关注,持续更新计组的内容(ps:也许期末用的上)。我们下次见~886

在这里插入图片描述

  • 20
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,这是一个需要较为复杂的回答。我会尽可能简单地解释这些概念。 1. 定点整数的机器数表示 定点整数是指小数点前后位数固定的整数。机器数是计算机内部表示数字的二进制形式。因此,定点整数的机器数表示就是将定点整数转换为二进制数,再将二进制数存储在计算机内存中。例如,一个4位定点整数的机器数表示可以是0000到1111,分别表示0到15。 2. 定点整数的变形补码加减运算 变形补码是一种用来表示定点整数的数学方法。加减运算时,需要将两个定点整数转换为变形补码形式,然后进行加减操作。变形补码加减运算的具体方法可以参考相关的数学教材或者网络资源。 3. 定点整数的原码一位乘法运算 定点整数的原码一位乘法运算是指将两个定点整数相乘,得到一个定点整数的结果。这种运算可以使用乘法器实现,其中每一位的乘法都可以通过逻辑门电路实现。在乘法器中,需要注意处理进位和溢出的情况。 4. 浮点数的加减运算 浮点数是一种带有小数点的数字表示方式。浮点数的加减运算可以使用IEEE 754标准中的浮点数加减运算方法实现。该标准定义了浮点数的二进制表示方式、舍入规则、运算规则等。浮点数的加减运算需要考虑舍入误差、溢出、下溢等情况。 以上是简单的回答,如果需要更加详细的解释,可以参考相关的数学和计算机科学书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值