当前位置:网站首页>为什么四个字节的float表示的范围比八个字节的long要广
为什么四个字节的float表示的范围比八个字节的long要广
2022-08-02 14:21:00 【Aurora230】
前言
我们在学习数据类型的时候学习了基本数据类型,基本数据类型中包括:数值型、字符型、布尔型。当学习数值型时知道了数值型包括整数类型和浮点类型。下面我们用一张图来说明数值型各个类型的字节数和取值范围。

从图中我们可以发现八个字节的long型居然没有四个字节的float型范围大,这是为什么呢,接下来我们就来一一介绍一下为什么会这样。
一、long型的存储方式
long (unsigned long) (signed long) [int]
数据在计算机中都以二进制方式存储
整数的二进制分3种表示形式:原码,反码,补码
正整数的原反补码相同
负数原码符号位取1,其余位与其绝对值的取值表现形式相同
反码:在原码基础上,符号位不变,其余位按位取反
补码:在反码基础上,加1可得补码
以int(32位)类型-1为例:
原码:10000000000000000000000000000001
反码:11111111111111111111111111111110
补码:11111111111111111111111111111111
为什么要使用补码的形式来进行存储?
因为计算机通常以加法的方式进行算术运算,不使用减法,所以负数需要通过补码的方式来参与运算。
二、float型的存储方式
float类型数字在计算机中用4个字节(32位)存储。
遵循IEEE-754格式标准:
一个浮点数由3部分组成:符号位s(1位)和、指数e(8位)、底数m(23位)
2、格式
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S:符号位
E:指数,十进制指数加上127后的值得二进制数据
M:底数
3、符号位
指底数的符号,可正可负。
4、指数
占用8bit的二进制数,可表示数值范围为0-255。
但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128
5、底数
实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。
总结
由此可见浮点数的表示范围比整型数大是因为采用的表示形式不同。
整型数在计算机底层采用补码的形式表示,除去首位的符号位,剩余的位数即表示数值的范围。浮点数在计算机中则是实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,用以近似表示任意某个实数。
边栏推荐
猜你喜欢
随机推荐
makefile——library
异常简单总结
BOM(Browser Object Model)浏览器对象模型相关概念
2022-07-29 第六小组 瞒春 学习笔记
2022-07-20 第六小组 瞒春 学习笔记
初识art-template模板引擎
2022-7-15 第五组 瞒春 学习笔记
DOM —— 事件代理
小知识系列:Fork之后如何与原仓库分支同步
【面经】被虐了之后,我翻烂了equals源码,总结如下
2021年度总结——收获圆满的一年
2022-07-28 第六小组 瞒春 学习笔记
Object.defineProperty方法(详解)
页面返回顶部和固定导航栏js基础案例
static关键字的三种重要作用详解
IDEA如何进行远程Debug
加载事件的用法
小知识点系列:数组与多维数组
双亲委派机制
排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之近似熵









