I understand that the first bit is the sign and that the next 8 bits is the exponent. So in this example you would have 1.1001*2^-4 ? How do I then interpret this in decimal?
0 01111011 10010000000000000000000
由于您已经知道这是(二进制)1.1001*10^-100,现在您只需要将二进制数转换为十进制数。
在十进制中,每个数字的值是它前面的数字的十分之一。在二进制中,每个数字的值是前一个数字的一半。
首先 1.1001*10^-100 = 0.00011001。
哪个是...
0 * 1 0 * 1
+ 0 * 1/2 + 0 * 0.5
+ 0 * 1/4 + 0 * 0.25
+ 0 * 1/8 + 0 * 0.125
+ 1 * 1/16 + 1 * 0.0625
+ 1 * 1/32 + 1 * 0.03125
+ 0 * 1/64 + 0 * 0.015625
+ 0 * 1/128 + 0 * 0.0078125
+ 1 * 1/256 + 1 * 0.00390625
0.0625 + 0.03125 + 0.00390625 = 0.09765625
这里的所有都是它的。
1.1001b
是1*1 + 0.5*1 + 0.25*0 + 0.125*0 + 0.0625*1
, 或1.5625
. 乘以2**-4
( 0.0625
) 得到0.09765625。
在 C 中:
int fl = *(int*)&floatVar;