计算机实数表示法---浮点数(一)

实数包含有理数和无理数,直观的看无理数是无限不循环的小数,有理数包含整数、无限循环小数和有限位的小数,现要着重讨论的是小数的表示方法。

举例说明:

对于11.75先转化为二进制形式

    11=8+2+1=10011

    0.75=0.5+0.25=fa004833aa744fe2adbece5f661810d0b58.jpg=0.11

    转化为规格化的二进制指数形式为11.75=10011.11=40bc8129465fb9c128ba9a6f8eb99cd1926.jpg

    类似的对于-0.75转化为格式化的二进制指数形式为-0.75=-0.11=0af9d423d02a1c96fe3233a8ef6038636e8.jpg

     对于这两个数采用单精度浮点数格式(2973d656c8c8e803b3857a6f2eaa6e4544d.jpg)存储分别为    

     0_10000011_00111100000000000000000、1_01111110_10000000000000000000000。

符号位比较好解释:0表示正数、1表示负数;

指数位8位e采用无符号数表示,范围是0-255,但是为了将实际指数范围从-127~128来表达很小或者很大的数时需要将实际指数+偏移量127,即10000011=4+127=131,01111110=-1+127=126;

尾数位就是从小数点往后取23位,不够的补0。

以上是单精度浮点数的表示规则,下面着重说明某些特殊值的表示:

1、0有正0和负0分别表示为0_00000000_00000000000000000000000,1_00000000_00000000000000000000000

2、无穷大和无穷小分别表示为1.0f/0.0f(分子只要不为0.0即可)  <=> 0_11111111_00000000000000000000000), -1.0f/0.0f  <=> 1_11111111_00000000000000000000000

3、NaN表示为0.0f/0.0f <=> 0_11111111_10000000000000000000000  尾数位只要不为0即可

4、指数位为0,尾数位不为0表示非规格化的2e5fbe05c7f875409391bc1580c9b5d5a46.jpg,这类数已经非常小了但是合法的可以通过Float.intBitsToFloat(0b1_00000000_11000000000000000000000)进行验证。

 

 

    

 

 

 

转载于:https://my.oschina.net/u/1268334/blog/3012636

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值