首页 > 编程学习 > 【计算机组成原理】浮点数的运算

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

发布时间:2022/11/12 19:37:15

浮点数的运算

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位机器
char888
short161616
int163232
long323264
long long646464
float163232
double646464

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 可能溢出或损失精度

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式