CS学习(五)——浮点数

1又7/16如何用二进制表示?

16:2^4(说明小数点后面有4位)

7:111

结果:1.0111

形如0.1111111……(i个1)的数表示刚好小于1.0的数,可以用1.0 - 1/(2^i)来表示。

局限性:

(1)只能表示诸如x/2^k这样的数

(2)小数点的位置?

IEEE754标准

基于科学计数法的思想:对于一个数有唯一的表现形式。

来源:湖大CS课程组

数学形式:

s确定是正还是负,数值0的符号位特殊判断,故称为符号位。

M叫做尾数,范围在[1.0,2.0)之间,用原码表示。

阶码E表示2的幂,是一个二进制整数,用移码表示。

来源:湖大CS课程组

何为移码?

移码=真值+偏移量

真值就是带符号数。

在浮点数表示中,偏移量Bias=2^(k-1) - 1。

单精度中,Bias=127。

规范化值

exp(阶码) != 000…0,且 != 111…1,即移码上的位数字不全为0或1。

真值E=Exp-Bais。

(Exp本该是0~255,由于0和255另作他用,所以这里Exp为1~254,E为-126~127)

举个栗子:

15213.0(float):1.1101101101101 * 2^13

符号位s=0。

Exp=13 + 127 = 140:1000 1100 

尾数frac = 110 1101 1011 0100 0000 0000(补足23位)

非规范化值

exp = 000…0,即移码上的位数字全为0。

E = 1 - Bias(126)。

非规范化值都是等距分布的,因为阶码值一样。

特殊值

exp = 111…1,即阶码上的位全为1。

(1)frac = 000…0 ,表示无穷大和溢出结果,至于正负由s决定。

例如:

1.0/+0.0 = +∞        1.0/-0.0 = -∞

(2)frac != 000…0 ,表示NAN(Not a Number),用来表示一些无法表示的数。

例如:

表示范围:

来源:湖大CS课程组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值