二进制 IEEE单精度浮点数转化为十进制浮点数

二进制 IEEE单精度浮点数转化为十进制浮点数

公式: (-1)s ×1. M ×2(E-127)

二进制IEEE单精度浮点数为32位,
第1位为阶符(sign),
第2位至第9位为阶码(exponent),
第10位至第32位为尾数(mantissa)。

S为0时表示正数,为1时表示负数。
将二进制E转化为十进制,并用E-127作为2的指数,并将剩余的23位作为1. M中的M

由于二进制的乘法可以用移位来表示,(E-127)为正数时将1. M的小数点向右移动(E-127)位,为负数时反之。

将最后得到的二进制数化为十进制。

例1: 41A4C000(16)化为十进制
①将十六进制化为十进制,即:
0100 0001 1010 0100 1100 0000 0000 0000
②重新组合
0 1000 0011 0100 1001 1000 0000 0000 000
③计算
S为0,该数为正数;

1000 0011 转化为十进制为131
指数为131-127=4
×2^4

1.M=1.0100 1001 1000 0000 0000 000
由于1. M×2^4
所以将小数点向右移动四位,即
10100.1001 1000 0000 0000 000
将其转化为十进制 为20.59375。

例2:0 0111 1110 1000 0000 0000 0000 0000 000(2)转化为十进制

s为0,该数为正数。
0111 1110转化为十进制126
×2E-127 =×2-1
1.1000 0000 0000 0000 0000 000小数点向左移移1位,0.1100 (后面的0忽略不计)
0.1100 转化为十进制0.75

你可能感兴趣的:(笔记,经验分享)