【计算机组成原理】浮点数的运算

X = -5/256

Y= +59/1024

计算X-Y

阶符2位,阶码3位,数符2位,尾数9位

X = -5 x 1/256 = -5 x 2-8 = -101x 2-8 = -0.101 x 2-5 = -0.101 x 2-101

Y = 59 x 1/1024 = 59 x 2-10 = 111011x 2-10 = 0.111011 x 2-4 = 0.101 x 2-100

小阶向大阶看齐

1、求阶差

求出两个数阶的差

Ex:
E1=-101 E2=-100 (二进制)
相对应的补码(双符号)为11011, 11100
第二个补码取反为00100
得差为
11011 + 00100 = 11111
补码转为真值为11001,为-1

2、对阶

根据求出的阶差,进行阶码和尾数的移位与变换。

Ex:
根据上面Ex得出第一个阶码比第二个阶码小1
因此x=-0.101 x 2^-101^ = 11011;11.011000000 -> 11100;11.101100000

尾数加减

-Y = -59 x 1/1024 = -59 x 2-10 = -111011x 2-10 = -0.111011 x 2-4 = -0.111011 x 2-100

=11100;11.000101

X-Y = 11100;11.101100000 + 11100;11.000101 = 11100;10.110001000

规格化

看数符,是否要进行右规或相关操作

Ex:
这里进行右移,数符和尾数右移,阶码加一
X-Y = 11100;10.110001000  -> 11101;11.011000100
                                      011000011
                                      100111100

舍0进1法

恒为1法

判断溢出

尾数溢出可以使用规格化和舍入

阶码溢出就发生溢出了。

Ex:
最后为2^-3^x(-0.1001111)~2~

类型16位机器32位机器64位机器char888short161616int163232long323264long long646464float163232double646464

char->int->long->double

float->double

范围、精度从小到大,转换过程没有顺手

32位

int:表示整数,范围-231~231-1

flaot:表示整数及小数,范围正负[2-126~2127x(2-2-23)],有效数字1+23=24

(1.1111111 1111111 11111111 x 2127)

int -> float 可能损失精度

float->int 可能溢出或损失精度

Original: https://blog.csdn.net/weixin_45755831/article/details/127819169
Author: Leviathan_Four
Title: 【计算机组成原理】浮点数的运算

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/656789/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球