浮点数详解

所谓“浮点”是什么意思呢?

计算机能处理二进制的数,那么小数是怎么处理的呢?下面一起来看看 ~~


这里还是得和大家介绍介绍二进制小数才能继续:二进制小数
了解完二进制小数之后就可以开始了 ~~

“浮点”的“点”指的是小数点,而“浮”指的是小数点的移动

浮点数,简单地说就是先有一个二进制数,然后通过浮点,也就是小数点的移动来精确表示一个数的整数部分和小数部分

拿 float 举例:
float 占4个字节,每个字节为8位(bit), 每个位(bit)占一个0或1,总共有32位!!
在这里插入图片描述

图片转载于 
作者:有无中
来源:优快云
原文:https://blog.youkuaiyun.com/whyel/article/details/81067989
版权声明:本文为博主原创文章,转载请附上博文链接!

下面分成三部分详细讲解:

1.符号位:

第1位,0表示正,1表示负

2.指数位(也叫阶码):

符号位之后的八位 ,这里的指数位不是科学计数法中的指数,而是用来确定偏移量

接着8个为指数位,8个位最多可以表示2^8 个数,即256。但指数也有正负,所以计算机就会先将那个8个位看成是一个无符号的char类型,然后根据无符号char类型,将其读出来,范围为255~ 0,然后将得到的数值减去127,此时它的范围就会变成128~-127了。所以,就有了float类型的取值范围了:2^128 ~ 2^-127。所以,在读float类型的指数位时,就先把它当成无符号的char类型去读,然后减去127,就是实际的指数值了。
作者:lulu_1085
来源:优快云
原文:https://blog.youkuaiyun.com/lulu_1085/article/details/78590736
版权声明:本文为博主原创文章,转载请附上博文链接!

3.尾数位(按原码的形式储存)

剩下的23个位表示的是尾数,什么意思呢? (23位=32位-1位-8位)

拿5.25举例子,5.25用二进制表示是101.01,则在浮点数储存的尾数则是:(1) 0101

不足23位的用 0 补足即:

(1) 010100000000000000000

Ps:括号里的1,是浮点数的隐藏位

所谓隐藏位就是

虽 然 在 内 存 中 没 有 , 但 是 计 算 机 在 解 析 这 个 浮 点 数 的 时 候 又 会 把 它 给 显 现 出 来 \color{red}{虽然在内存中没有,但是计算机在解析这个浮点数的时候又会把它给显现出来}


这里继续针对5.25,

首先是正数,则第一位符号位为0

然后5.25二进制形式101.01,小数点向右偏移了2位,(起点在(1).0101这一位),则指数位为127+2=129,即

10000001 (129的二进制形式)

综上:
5.25的浮点数储存形式为:

0 10000001 010100000000000000000

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值