单精度浮点数的二进制表示时 指数为什么要加上127的偏移量
2010-10-19 19:39
375 查看
单精度浮点数
IEEE 754 标准所定义的单精度浮点数的长度为 32 位,按位域可划分为:符号位、阶码位与尾数位,如下: 31----------------------22---------------------------------------------------------0
| | |
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
| |-------------------| |----------------------------------------------------------|
符号 阶码 尾数符号位取 0 表示正数,取 1 表示负数。阶码位是 8 位,这里有一点小门道需要注意,那就是的指数 n 并不能直接当作阶码来处理,需要将其与 127 (0x7f) 相加才可得到 的阶码表示。尾数的位域长度在图示中是 23 位,但实际上却是 24 位,这个位是“不可见”的,其值固定为 1,这也就是说 IEEE 754 标准所定义的浮点数,其有效数字是介于 1 与 2 之间的小数。可以尝试写一下 1.0 这个数的二进制单精度浮点格式,这有助于更好地理解单精度浮点数格式的位域分布。1.0
的二进制单精度浮点格式:0 0111 1111 000 0000 0000 0000 0000
0000值得注意的一个问题是:书上说之所以要将指数加上 127 来得到阶码,是为了简化浮点数的比较运算,这一点我没有体会出来。但是通过 127
这个偏移量 (移码),可以区分出指数的正负。阶码为 127 时表示指数为 0;阶码小于 127 时表示负指数;阶码大于 127 时表示正指数。第二个值得思考的问题是:使用 24 位尾数,大概可以得到 个十进制数字的精度,其中的“半个”数字由 FPU 的好意而产生的一个随机数字,这个数字通常接近 5 (四舍五入?)。第三个问题是我经常要碰到的:IEEE 754 标准所定义的单精度浮点数所表示的数的范围是多少?书上给出的答案是大约为 或者大约 。这个比较好理解,因为尾数的最大值是接近 2,而指数的范围是 [-127, 127],那么这个范围就可以表示为。
IEEE 754 标准所定义的单精度浮点数的长度为 32 位,按位域可划分为:符号位、阶码位与尾数位,如下: 31----------------------22---------------------------------------------------------0
| | |
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
| |-------------------| |----------------------------------------------------------|
符号 阶码 尾数符号位取 0 表示正数,取 1 表示负数。阶码位是 8 位,这里有一点小门道需要注意,那就是的指数 n 并不能直接当作阶码来处理,需要将其与 127 (0x7f) 相加才可得到 的阶码表示。尾数的位域长度在图示中是 23 位,但实际上却是 24 位,这个位是“不可见”的,其值固定为 1,这也就是说 IEEE 754 标准所定义的浮点数,其有效数字是介于 1 与 2 之间的小数。可以尝试写一下 1.0 这个数的二进制单精度浮点格式,这有助于更好地理解单精度浮点数格式的位域分布。1.0
的二进制单精度浮点格式:0 0111 1111 000 0000 0000 0000 0000
0000值得注意的一个问题是:书上说之所以要将指数加上 127 来得到阶码,是为了简化浮点数的比较运算,这一点我没有体会出来。但是通过 127
这个偏移量 (移码),可以区分出指数的正负。阶码为 127 时表示指数为 0;阶码小于 127 时表示负指数;阶码大于 127 时表示正指数。第二个值得思考的问题是:使用 24 位尾数,大概可以得到 个十进制数字的精度,其中的“半个”数字由 FPU 的好意而产生的一个随机数字,这个数字通常接近 5 (四舍五入?)。第三个问题是我经常要碰到的:IEEE 754 标准所定义的单精度浮点数所表示的数的范围是多少?书上给出的答案是大约为 或者大约 。这个比较好理解,因为尾数的最大值是接近 2,而指数的范围是 [-127, 127],那么这个范围就可以表示为。
相关文章推荐
- 为什么八位二进制表示范围为-128~127?
- [置顶] 为什么-128用二进制表示为1000000000000000?
- 八位二进制数为什么表示范围是:-128~~+127?
- 八位二进制数为什么表示范围是:-128~~+127?
- 数据类型:整数最小值为何不是最大值的相反数(为什么八位二进制数表示范围是:-128~127 ) ?
- 计算机中char型数为什么表示的是-128————127
- 八位二进制数为什么表示范围是:-128~~+127?
- 为什么8位二进制的补码取值范围是-128~127
- 为什么0.1无法被二进制小数精确表示?
- 解读为什么有符号的char可表示范围是-128~+127
- 【转】为什么0.1无法被二进制小数精确表示?
- IEEE754浮点数表示,为什么偏移码是127?为什么偏移码范围是1~254?
- 寒假06:6-2递归求二进制表示位数、8-2求完数、5-2求指数
- 为什么0.1无法被二进制小数精确表示?
- printf()中的数据类型%h后为什么要加上d才能表示短整型
- 八位二进制数为什么表示范围(-128~~+127)理解
- 八位二进制数为什么表示范围是:-128~~+127?
- 算法训练 6-2递归求二进制表示位数 ;求完数;求指数;字符串变换
- 十进制的0.1 为什么不能用二进制很好的表示?
- 为什么阶码的偏移量选择用127而不用128?