zoukankan      html  css  js  c++  java
  • 第二章 运算方法与运算器(浮点数的加减法,IEEE754标准32/64浮点规格化数)

    这一章,主要介绍了好多种计算方法。下面,写一点自己对于有些计算(手写计算过程)的见解。


    • 1.原码、反码、补码

      原码:相信大家都会写,符号位在前二进制数值在后,凑够位数即可。

      反码:原码符号位不变,其他位全部取反。

      补码:反码末位加一 / 原码符号位不变,从右往左数第一个1及其右边的各位不变,其余位全部取反

    • 2.IEEE754的转换

      IEEE754标准32/64浮点规格化数形式:X = (-1)* 1.M * 2E-127(其中,S-阶符,M-尾数,E-阶码)

        32位的规格化浮点数:SEM00000...(即二进制SEM后面补0,写够32位)

      以27/64为例:

        ①化形式:27/64 = + (1.1011)* 2-2 

        ②找SEM:S=0,M=1011,E=(125)10=(01111101)2

        ③写结果:00111110 11011000 00000000 00000000 = (3ED800)16

    • 3.变形补码计算加减法

      变形补码没什么稀奇,不过是符号位变成两位而已(00为正,11为负),它的价值在于可以作溢出判断(结果00//11表示未溢出,01-上溢(所谓上溢符号位还是0),11-下溢(下溢符号位还是1)),就正常求补码(符号位double),放在一起加和,做溢出判断,最后别忘了把补码再转换回原码作为最终结果。

      x+y:

       以x=11011, y=00011为例:

        ①求补:[11011]=0011011, [00011]=0000011

        ②加和:011011 + 000011 = 0011110;符号位00,未溢出,故x+y=11110

      x-y:(这里把减法化为加法,即 x-y = x+(-y),另外[-y] = [y] 从右往左数第一个1及其右边的各位不变,其余位全部取反,这次连带符号位也要取反)

       以x=11011, y=-11111为例:

        ①求补:[11011]=0011011, [-11111]=1100001,[-y]=0011111

        ②加和:[x]+[-y] = 0011011 + 0011111 = 0111010;符号位01,正溢(上溢);故x-y=+111010

    • 4.浮点数加减法(我用的是补码计算)

      这里面涉及的东西比较多,每一步都需要仔细,错一步结果就错了。

      ①求补对阶

      ②尾数求和

      ③规格化

      ④舍入处理

      ⑤溢出判断

      ⑥写结果

    例子后面给


  • 相关阅读:
    在线考试————随机出题
    HTTP协议
    团队
    做作业
    图书馆管理说明书性能
    关于敏捷开发的学习
    运行环境
    图书馆管理系统说明书
    性能(2)
    作业
  • 原文地址:https://www.cnblogs.com/yocichen/p/9314326.html
Copyright © 2011-2022 走看看