浮点数的二进制示意,基本上就是用二进制的迷信计数法来示意。

一个十进制的数0.75,用迷信计数法示意是+7.5*10^-1,分为3个局部,正负号、7.5和-1。

其中小数点前的局部,肯定是一个1-9之间的数。也就是你不能写成+75*10^-2。

好了,换成2进制(以下均以float类型为例),因为它占用的位数无限(个别是32位),因而咱们须要仿照十进制迷信计数法的形式,把这些位切分为3局部。

符号只有正负,因而用1位示意。

指数和尾数局部的划分决定了数字能示意的最大值和精度。IEEE的规范,指数位是8位,剩下是尾数位。

8位能够示意的范畴是0到255,或者-127到+128,为了能示意2^-1的概念,抉择后者。

尾数的精华在于跟十进制的示意一样,方才说十进制的小数点之前是1-9,那么二进制的小数点之前肯定有一个1。

二进制转十进制

以上面这一串比特位为例:

0-01111110-10000000000000000000000

0是符号位,代表负数。

两头是指数位,写成十进制是126,减去127之后失去-1。

最初是尾数,疏忽开端的0,同时在小数点前补1,失去1.1,转成十进制是1.5。

咱们把三个局部拼起来,失去+1.5*2^-1=0.75

十进制转二进制

以2.75为例子,先把小数点前后都写成二进制模式,失去10.11。

10.11*2^0不满足要求,为了让小数点前的数是1,所以咱们向左挪一下小数点,失去1.011*2^1。

(下面这步和把75*10^0写成7.5*10^1是一个意思)

最初咱们把3个局部提取进去,别离是符号位0,指数位1+127=10000000,尾数位0110…