计组 | 一篇足够 浮点数的二进制表示(IEEE 754标准)
请简要介绍一下IEEE754是什么? IEEE协会为了以解决计算机系统中浮点数存储机制、运算规则以及数据表示方法等问题为基础而制定了IEEE754标准。
那么问题来了:浮点型数的独特之处究竟体现在哪些方面呢?存储这样的数值为何需要一套不同于纯整数和纯小数的统一表示规范呢?
以下是按照给定规则对原文的改写内容
IEEE 754标准通过一种统一化的表示方式将浮点型小数转换为固定格式,并采用统一化的表示方式记录小数点的位置。
想要深入理解IEEE 754标准,则需要掌握真值、反码、补码、移码等基本概念,并具备扎实的进制转换基础;随后将依次进行详细讲解。
真值:所谓的真值即指我们在数学上所理解的一个带符号号位的实际数值;
原编码:就是将一个十进制或非二进制数值转换为二进制形式,并且对于负数值,则在其二进制表示中最高有效位设为1;
反编码:对于正数值保持不变,在其原代码基础上对除符号位以外的所有位进行求反操作即可得到相应的机器代码;
而对于负数值则需对其原代码进行取反操作后再加1;
至于机器中的移编码,则是通过将计算机内部存储时采用的形式实现的一种特殊编码方式,
它实际上相当于对机器中的补编码再进行一次求反运算,
这种设计主要是为了方便处理浮点型数据中的指数部分,
使得计算更加简便高效。
现代计算机中通常采用IEEE 754标准来表示浮点数值,在内存中的数据表示形式是:

对于不同长度的浮点数,阶码与小数位分配的数量不一样,如下:

对于32位的单精度浮点型数据来说,在二进制表示中它由三部分组成:符号占用了1位、指数部分占据了8位、而有效数字则占据了剩余的23位。
按照该标准流程将一个十进制的浮点数值转换为对应的IEEE754规范编码形式。
例如:将数字178.125作为示例进行处理。
以下是按照给定规则对原文进行的同义改写

可能有个疑问:小数点前面的1去哪里了?

转换成二进制的浮点数,即把小数点移动到整数位只有1
即尾数部分以规格化的小数形式表示,并且其最高有效位始终为"1"。从而使得这一高位被省略以节省一个二进制位用于存储小数值的同时提升了数值的精度。
为什么阶码要用阶数+偏移量呢,直接存阶数不行吗?

阶码属于无符号整数集合;
然而,在这种情况下,
尽管存在负数值的可能性,
我们需要通过引入偏移量将其转换为非负形式(即使用偏移后的值作为新的数值表达)。
32/64位浮点数的规格化具体如下图表示:


结合例题食用~


参考网址:
双精度浮点数的二进制形式(IEEE 754标准:计算机科学中的数值表示方法)
