- UID
- 852722
|
2 浮点数与十进制数之间的相互转换
2.1 十进制数转换成浮点数
设:十进数为A,则2Z=A,Z=LnA/Ln2,指数P=Int(Z);尾数部分X:X=A/2P,其整数部分隐含为1(零除外),将其小数部分按原码格式化为二进制数,即为尾数的小数部分BY0BY1BY2。而指数偏差Eb=P+7FH(其中的7FH为指数的偏移量)。符号位S,视十进制数的正负而确定。
例如十进制数50.265化为32位规格化浮点数:A=50.265,则Z=Ln50.265/Ln2,P=Int(Z),故P=5;X=A/2P=50.265/25=1.57078125,将0.57078125化为23位二进制小数,即是BY0BY1BY2,在最高位添上十进制数的符号位S(因十进制数为正数,故S=0);而Eb=P+7FH,所以,十进制数50.265的32位规格化浮点数即为84H,49H,0FH,5CH。
2.2 浮点数转换为十进制数
设浮点数为EbS.BY0BY1BY2。由于浮点数隐含尾数的整数为1,故尾数X的实际值为:
BY0BY1BY2;指数P=Eb-7FH;故:十进制数
A=(-1)S×2P×X
例:32位规格化浮点数84H,49H,0FH,5CH转换为十进制数。
符号位S=0;指数P=84H-7FH,故P=5;尾数的小数部分为49H,0FH,5CH左移一位,而尾数的整数部分隐含为1,故尾数X的实际值为:1.57078123;十进制数A=(-1)0×25×1.57078123,即A=50.265。 |
|