浮点数(四)
3、乘法运算基本操作:
X = (-1)SX×MX×2EX
Y = (-1)SY×MY×2EY
X×Y = (-1)(SX+SY)×(MX×MY)×2(EX+EY)
以6.2510和0.7510的二进制乘法为例:
(1)、两个数的二进制形式
6.2510 = 110.012 = 1.1001×22
二进制形式为:
0 | 1000 0001 | 1001 0000 0000 0000 0000 000 |
0.7510 = 0.112 = 1.1×2-1
二进制形式为:
0 | 0111 1110 | 1000 0000 0000 0000 0000 000 |
(2)、检查是否有乘数为0,如果有,则返回0。
这里两个乘数均不为0。
(3)、对符号字段进行按位异或运算
0^0 = 0
(4)、对指数字段进行运算
积的指数字段 = X的指数字段 + Y的指数字段 - 127
= 10000001 + 01111110 - 01111111
= 10000000
(5)、尾随有效数字字段相乘
1 | . | 1 | 0 | 0 | 1 | ||||
* | 1 | . | 1 | 0 | 0 | 0 | |||
0 | 0 | 0 | 0 | 0 | |||||
0 | 0 | 0 | 0 | 0 | |||||
0 | 0 | 0 | 0 | 0 | |||||
1 | 1 | 0 | 0 | 1 | |||||
1 | 1 | 0 | 0 | 1 | |||||
1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
(6)、规格化结果
积 = 10.01011000×21
= 1.001011000×22
结果的二进制形式为:
0 | 1000 0001 | 0010 1100 0000 0000 0000 000 |
4、除法运算
基本操作:
X = (-1)SX×MX×2EX
Y = (-1)SY×MY×2EY
X/Y = (-1)(SX-SY)×(MX/MY)×2(EX-EY)
以3.7510和-1.510的二进制除法为例:
(1)、两个数的二进制形式
3.7510 = 11.112 = 1.111×21
二进制形式为:
0 | 1000 0000 | 1110 0000 0000 0000 0000 000 |
-1.510 = -1.12 = -1.1×20
二进制形式为:
1 | 0111 1111 | 1000 0000 0000 0000 0000 000 |
(2)、检查操作数是否为0。
如果X、Y均为0,结果为NaN。
如果Y为0,结果为∞。
如果X为0,结果为0。
这里两个操作数均不为0。
(3)、对符号字段进行按位异或运算
0^1 = 1
(4)、对指数字段进行运算
商的指数字段 = X的指数字段 - Y的指数字段 + 127
= 10000000 - 01111111 + 01111111
= 10000000
(5)、尾随有效数字字段相除
1 | 0 | 1 | ||||||
1 | . | 1 | ) | 1 | . | 1 | 1 | 1 |
1 | 1 | |||||||
1 | 1 | |||||||
1 | 1 | |||||||
0 |
(6)、规格化结果
商 = -1.01×21
结果的二进制形式为:
1 | 1000 0000 | 0100 0000 0000 0000 0000 000 |