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.浮点数加减法(我用的是补码计算)

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

      ①求补对阶

      ②尾数求和

      ③规格化

      ④舍入处理

      ⑤溢出判断

      ⑥写结果

    例子后面给


  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/yocichen/p/9314326.html
Copyright © 2011-2022 走看看