前言
- 闲来无事便对浮点数进行了探讨,查阅了一些文章并进行了上机测试
话不多说我们一起来看看
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是浮点数?
- 浮点数即是计算机世界中小数的说法
电气和电子工程师协会IEEE对于计算机浮点数的存储、运算、表示等推出了IEEE754标准
- 标准中规定:
- float32位单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位表示指数,用 23 位表示尾数。
- double64位双精度浮点数,用 1 位表示符号,用 11 位表示指数,52 位表示尾数。
二、浮点数的存取规则
-
规范化的指数形式
- 如实数 3141.5926 可表示为3.1415926E+3
-
移码
- 移码是真值补码的符号位取反,一般用作浮点数的阶码,目的是便于浮点数运算时的对阶操作
- --------存储浮点数时,会根据其指数加上移码作为其指数域的值
- 移码是真值补码的符号位取反,一般用作浮点数的阶码,目的是便于浮点数运算时的对阶操作
-
举例
- 比如 == 【12.34的单精度浮点数表示】 ==
-
首先将12.34转成二进制
-
整数部分12的二进制是: 1100
>.整数部分转二进制 '除2取余' 小数部分 '乘2取整' 这里不过多赘述
-
小数部分0.34的二进制是: 0.01010111000010100011[1101…]
-
12.34的二进制代码就是: 1100.01010111000010100011[1101…]E+0
>.由于单精度浮点数尾数只有23位,所以需要舍入
-
正规化后再舍入就是: 1.10001010111000010100100E+3
-
其尾数部分即: 10001010111000010100100 \color{blue}{10001010111000010100100} 10001010111000010100100
-
指数为 3 加上移码 127 等于130,其指数域也就是:
-
- 比如 == 【12.34的单精度浮点数表示】 ==