所谓“浮点”是什么意思呢?
计算机能处理二进制的数,那么小数是怎么处理的呢?下面一起来看看 ~~
这里还是得和大家介绍介绍二进制小数才能继续:二进制小数
了解完二进制小数之后就可以开始了 ~~
“浮点”的“点”指的是小数点,而“浮”指的是小数点的移动
浮点数,简单地说就是先有一个二进制数,然后通过浮点,也就是小数点的移动来精确表示一个数的整数部分和小数部分
拿 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