关于C浮点数范围的问题


数据范围算法

整型(以有符号短整型为例)数据,其占有2个字节,16位(bit),表示的范围为-2^15~2^15-1),即-32768 ~ 32767,该范围是如何计算出来的呢? 在此 16 位中 ,第一位是符号位,后15位为数值位。符号位中0表示该数为正,1 表示该数为负。

故该类型表示的

最小数为1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1    - 2^15
      \
      符号位

      /
最大数为 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1    2^15- 1



问题的提出
实型(以单精度为例)数据,其占有 4 个字节,32 位( bit)。 按以上算法, 其表示的最小数应为
1111 1111111111111111 111111111111
最大数应为
0111 1111111111111111 111111111111
但事实上, 单精度数的范围为- 1 . 7 * 10^38~ 1 . 7 * 10^38, 有效数位为7 位,那么 该数的范围是如何计算出 来的呢? 该数
表示的最大数仅整数部分就是 39 位, 为什么 其有效位却是 7 位呢?




关于程序设计语言中实型数范围的研究





计算机中的阶符,阶码,数符,尾数:

一个十进制数可写成一个纯小数乘上10的若干次方,相似的,一个二进制可写成一个纯小数乘上2的若干次方,例如,11.01=22×0.1101

一般地,任一二进制N,可表示为N=2^j×S
其中j为二进制数,叫阶码,j如果有正负号的话,正负号就叫阶符.S为纯小数,叫做尾数.数符,指的是N整个数的符号.
延伸一个,知道计算机中阶符,阶码,数符,尾数才能对于浮点数有比较好的理解.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值