雅乐网

计算机技术、学习成长

编程 » C/C++ » 浮点数的二进制存储形式及c语言验证

浮点数的二进制存储形式及c语言验证

我们经常听说浮点数,其实浮点数是和定点数对应的。定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数。

浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以是正数可以是负数;第二部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。

下面介绍常用的IEEE标准定义的浮点数的标准。

搜狗截图20140627191037

符号部分: 0表示正数 1表示负数

位移量部分:采用余127码表示。在余码系统中,正数和负数都用无符号数储存,而且可以保持原有的大小关系,只需要将所有的数字整体右移。即该部分看做无符号整数,127表示0 126表示-1 128表示1

尾数部分:是将某数字化为1.xxxxxxx * 2^n的形式后的xxxxxx部分.小数点和其左边的1并不存储。

浮点数的存储步骤:

1. 看符号位

2.将数字转化成二进制

3.将二进制规范化为 1.xxxxxxxx*2^n

4. 将n转化为指数(加上127) 尾数xxxx后面补零

5.写出

下面举几个例子:

5.75的二进制表示

1. 是正数,因此符号位为0

2. 十进制转化二进制 5.75 = 101.11(二进制)

3. 将二进制规范化:101.11 = 1.0111 * 2^2

指数部分为2  尾数部分为0111

4. 根据余127码 指数部分为 2+127 = 129 = 10000001(二进制) 尾数部分后面补零 01110000000000000000000

5. 表示如下

0 10000001 01110000000000000000000

-161.875的二进制表示

1. 符号位为1 (负数)

2.转化为二进制 161.875 = 10100001.111(二进制)

3.二进制规范化: 10100001.111 = 1.0100001111 * 2^7

4.指数部分E = 7+127 = 134 = 10000110(二进制) 尾数部分0100001111

5.表示如下

1 10000110 01000011110000000000000

1 10010100 00000000111000100001111表示为实数

1. 首位为1 是负数

2. 指数部分10010100 = 148    148-127 = 21

3. 尾数去规范化 1.00000000111000100001111

4.二进制为 1.00000000111000100001111 * 2^21

5. 十进制为2104378.75

6.该数字是 -2104378.75

c语言验证

搜狗截图20140627200725

源代码如下

 

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/float.html

上一篇:

下一篇:

我要评论

验证码*: 3 + 8 =