计算机组成原理浮点数加减法运算(一看就懂)

本文详细解析了浮点数加法运算的过程,包括零操作数检查、对阶、尾数相加、结果规格化、舍入处理及阶码溢出判断。通过具体实例,展示了如何将原码转换为补码,进行尾数左归和右归的操作,以及如何判断溢出。

废话不多说,直接看例子:

步骤:

1. 零操作数检查(一般都是非0,除非出题人脑子不行);
2. 对阶:阶码对齐后才能加减。规则是阶码小的向阶码大的数对齐,若阶码相等则不用对阶;

如题:
X阶码为010,符号位为+(正),所以阶码为00010,尾数在题目中给出的是原码,化成补码是0.11011011;
同理可得Y的阶码和尾数(注意Y尾数为负,尾数符号位是1);

因为00100 > 00010,所以把00010加上1 0(二进制)(十进制为2),此时X的尾数小数点应左移两位

3. 尾数相加

4. 结果规格化
  • 如果溢出则右归,即小数点左移,一直左移直到没有溢出时停止(判断溢出方法:双符号位相等,比如00.10101、11.0101都是没溢出的;像01.0101就是溢出了,若没给出双符号位,则不会溢出);
  • 若没溢出则看补码是不是00.1XXXXX或者11.0XXXXX的形式,如果不是则左归(就是小数点右移)成以上格式
    继续看题:
    尾数如上,左归一位(小数点右移一位),结果为1.00010101(10),阶码为00011;
5. 舍入处理

6. 阶码溢出判断处理


注意最后结果要化为原码

### 原理 - **左归**:在浮点数运算里,左归是指当尾相加结果的最高位产生进位时,尾需要向左移动位,同时减 1。这样做是为了让尾重新回到规格化的形式。例如,在二进制浮点数运算中,若尾相加后结果为 10.xxxx,此时就需要左归,将尾变为 1.xxxx,相应减 1。 - **右归**:右归则是当尾相加结果的绝对值小于 1 时,尾需要向右移动位,同时加 1。目的同样是使尾达到规格化状态。比如,尾相加结果为 0.01xxxx,就需要右归,把尾变为 0.1xxxx,加 1。 ### 应用 - **左归应用**:在高精度计算中,当进行浮点数的乘法或加法运算后,尾可能会产生进位,这时就需要左归操作来保证结果的准确性和规格化。在科学计算、金融计算等领域,高精度的浮点数计算是很常见的,左归能避免因尾溢出而导致的计算错误。 - **右归应用**:在浮点数的除法运算或者在处理非常小的值时,尾可能会小于 1,此时右归就可以使结果规格化。在信号处理、图像处理等领域,经常会处理值范围跨度较大的据,右归有助于保持据的致性和可处理性。 ### 区别 - **运算方向**:左归是尾向左移动,减 1;右归是尾向右移动,加 1。 - **产生条件**:左归是在尾相加结果最高位产生进位时进行;右归是在尾相加结果绝对值小于 1 时进行。 - **对值影响**:左归会使变小,值整体变小;右归会使变大,值整体变大。 ```python # 简单的模拟左归和右归的代示例 # 假设浮点数和尾表示 def left_normalize(mantissa, exponent): while mantissa >= 2: mantissa /= 2 exponent -= 1 return mantissa, exponent def right_normalize(mantissa, exponent): while mantissa < 1: mantissa *= 2 exponent += 1 return mantissa, exponent # 示例使用 mantissa = 4 exponent = 3 new_mantissa, new_exponent = left_normalize(mantissa, exponent) print(f"左归后: 尾 {new_mantissa}, {new_exponent}") mantissa = 0.25 exponent = 3 new_mantissa, new_exponent = right_normalize(mantissa, exponent) print(f"右归后: 尾 {new_mantissa}, {new_exponent}") ```
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值