• 浮点数的计算


    对于浮点数的计算,首先可以看加减操作。浮点数的加减法分为5个操作:对阶 尾数加减 规格化  舍入 判溢出五个步骤:

    1)对阶  将两个科学记数法表示的数 的阶数对齐。

       例如:9.85211*10^12 + 9.66007*10^10     (这里写的是十进制数)

    对于这种加法,阶数小的数向阶数大的数靠拢。这样做的好处是方便处理尾数。

    2)尾数相加减    加减法

    3)规格化  规格化指的是让尾数的首位有效(不是0),将尾数控制在0.01~1内

    4)舍入  根据题目要求,有时候可能需要舍去几位尾数。常见做法是四舍五入,或者直接暴力抹除并进1.

    5)判溢出  因为阶码不能超过表示上限。

    ------

    例题:十进制数x=- 5/256   y=+59/1024   按照补码规则计算X-Y

    (在此处规定浮点数标准为:阶符2位,阶码3位,数符取2位,尾数取9位  阶码和尾数都使用补码表示)

    解答:  X 从十进制转换为二进制,5->101    5/256-->101/2 那么-5/256--->-101/28--> -0.101*2-101

           Y:59-->111011   1/1024--->2-10    那么Y=59/1024--->0.111011* 2-100

    将X和Y转换为补码形式:

      X:-101-->11101(原码)-->11011(补码)

      Y:-100--->11011(原码)-->11100(补码)     0.111011--->00 111011000(原码、补码)

       所以,X用补码表示是11011 11 011000000   Y用补码表示是11100 00 111011000    前面5位是阶符和阶码,中间2位是数符,后9位是尾数。

      在完成数码转换后,进行浮点数的加减法:

      1) 对阶:小阶对大阶

         求阶差: 11011+00100=11111  x和y的阶数相差为1    为了小阶对大阶,修改X的阶码。

         对齐:X的原码形式阶符+阶码是11101,加1以后变成11110,再取补码得11010。再将尾数右移一位,尾数变成了-0.0101,再转补码就是11 101100000.补码变成了11100 11 101100000

        -Y的补码是11100 11 000101000

       X-Y的补码=X的补码+-Y的补码,X+(-Y)= 11100 10 110001000

      注意:数符部分出现了10 ,说明计算过程中出现了进位溢出,稍后处理

      3)规格化:11100 10 110001000(补码)--->-1.001111*2-100 --->-0.1001111*2-011   对应的机器码变化是11100 10 110001000(补码)---> 11101 11 011000100(补码)

      4)舍入   这道题没有要求舍去,所以不用处理

      5)判溢出   无最大最小溢出,无需处理

      

       

  • 相关阅读:
    线程池问题
    高级I/O
    闹钟设计
    线程竞争问题
    线程基本函数
    SpringMvc支持跨域访问
    gitlab qq邮件配置
    gitlab断电
    docker run always
    电子书网
  • 原文地址:https://www.cnblogs.com/namezhyp/p/14786058.html
Copyright © 2020-2023  润新知