https://zh.wikipedia.org/wiki/IEEE_754
简而言之,为什么最高位要添加1,因为你学的编程语言是符合IEEE754标准的,所以使用IEEE754标准的浮点数转换方式。
至于为什么使用它作为标准,因为当时行业内需要统一浮点数表示的标准,这个方法在当时又是先进且合理的,所以选了它做标准。现在还在使用是因为历史惯性和这个方法本身没有大毛病。
计算机存储的比特是2的8次方 0 - 255 也就是说需要8位
你这里只有7位 如果是别的类型就补0 但是float类型最高位始终为1 这是没毛病的 所以补1
可以先看看IEEE754标准的相关材料。
前面补1是称为规格化的小数,是因为一个小数可以有多种表达方式,比如:
0.25 = 1.0 * (2 ^ -2)
0.25 = 0.5 * (2 ^ -1)
0.25 = 0.25 * (2 ^ 0)
0.25 = 0.125 * (2 ^ 1)
……
换成阶码和小数部分时,就有多种可能性,为了表达出更多的数值,规定一个规格化的小数都是大于0的,这样只要阶码不超过表示的范围,就用
0.25 = 1.0 * (2 ^ -2) 这种表达方式,这里的阶码是-2, 小数部分是1.0。
提醒注意IEEE754规范里,既有默认1.0的小数,也有少量以0开头的小数。