zoukankan      html  css  js  c++  java
  • 浮点数的加减运算(阶码、尾数)

    浮点数尾数运算  < ---- >  原码加/减运算

    原码:+|x|  或者  -|x|      (正数=0+|x|    负数的=1+|x| )

    符号位和数值部分:分开处理

    仅对【数值部分】进行加减运算,符号位起判断和控制作用

    规则如下:

    比较两数符号,对加法实行同号求和,异号求差,对减法实行异号求和,同号求差

    求和:数值位相加,和的符号取被加数(被减数)的符号。若最高位产生进位,则结果溢出

    求差:被加数(被减数)与加数(减数)求补相加。

    a)最高数值位产生进位表明加法结果为正,所得数值位正确。

    b)最高数值位没产生进位表明加法结果为负,得到的是数值位的补码形式,需对结果求补,还原为绝对值形式的数值位。

    差的符号位:a)情况下,符号位取被加数(被减数)的符号;

      b)情况下,符号位为被加数(被减数)的符号取反。


    举个栗子:~

    1:已知 [X] = 1.0011[Y] = 1.1010,要求计算[X+Y]

    解:由原码加减运算规则知:同号相加,则求和,和的符号同被加数符号。

           所以:和的数值位为:0011 + 1010 = 1101  ALU中无符号数相加)

                      和的符号位为:1

                      [X+Y] = 1.1101  求和:直接加,有进位则溢出,符号同被加数

     

    2 :已知 [X] = 1.0011[Y] = 1.1010,要求计算[XY]

    解:由原码加减运算规则知:同号相减,则求差(补码减法)

           差的数值位为:0011+(1010)求补 = 0011 + 0110 = 1001

           最高数值位没有产生进位,表明加法结果为负,需对1001求补,还   

           原为绝对值形式的数值位。即:(1001)求补= 0111

           差的符号位为[X]的符号位取反,即:0

                      [XY] = 0.0111     求差:加补码,不会溢出,符号分情况


    浮点数阶码运算 < ---- >  移码加/减运算

    移码:不管正负,只要将其补码的符号位取反即可。

    符号位和数值部分:一起处理

    运算公式(假定在一个nALU中进行加法运算)

    [E1]+[E2]=2n-1+E1+2n-1+E2=2n+E1+E2=[E1+E2]mod 2n

    [E1]–[E2]=[E1]+[–[E2]]=2n-1+E1+2n–[E2]

                                =2n-1+E1+2n–2n-1–E2

                               = 2n+E1–E2 = [E1–E2]mod 2n

     结论:移码的和、差等于和、差的补码!

    运算规则

    ① 加法:直接将[E1][E2]进行模2n加,然后对结果的符号取反。

    ② 减法:先将减数[E2]求补(各位取反,末位加1),然后再与被减数 [E1]进行模2n相加,最后对结果的符号取反。

    ③ 溢出判断:进行模2n相加时,如果两个加数的符号相同,并且与和数的符号也相同,则发生溢出。

     


    1: 用四位移码计算“7+6)”和“3 + 6”的值。

    解:[–7] = 0001       [– 6]= 0010   [–3]= 0101  [6]= 1110

           [–7]+ [–6] = 0001 + 0010 = 0011 (两个加数与结果符号都为0,溢出)

           [3] + [6] = 0101 + 1110 = 0011, 符号取反后为 1011,其真值为+3

           问题:[–7+(–6)]=?           [3+(6)] =  

     

    2: 用四位移码计算“7 6)”和“3 5”的值。

    解:[–7] = 0001       [– 6]= 0010   [–3]= 0101  [5]= 1101

          [7] [–6] = 0001 + 1110 = 1111, 符号取反后为 0111,其真值为–1

           [3] [5] = 0101 + 0011 = 1000,符号取反后为 0000,其真值为– 8

  • 相关阅读:
    20159208 《网络攻防实践》第七周学习总结
    20159208《网络攻防实践》第六周学习总结
    20159208《网络攻防实践》第五周学习总结
    20159208《网络攻防实践》第四周学习总结
    20159204 wireshark使用方法介绍
    20159204 kali linux下nmap的使用方法介绍
    20159204国内黑客介绍
    20159204 国外黑客介绍
    20159204《网络攻防实践》项目计划
    20159204《网络攻防实践》第9周学习总结
  • 原文地址:https://www.cnblogs.com/l20902/p/10610920.html
Copyright © 2011-2022 走看看