当前位置:网站首页>为什么四个字节的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)的整数次幂得到,用以近似表示任意某个实数。
边栏推荐
猜你喜欢
Window function method for FIR filter design
时频分析之Wigner-Ville分布
2021 annual summary - complete a year of harvest
DOM —— 事件代理
为什么四个字节的float表示的范围比八个字节的long要广
JS中的数组方法和循环
[Fault Diagnosis] Weak Fault Diagnosis of Fan Bearing Based on PSO_VMD_MCKD Method
为什么四个字节的float表示的范围比八个字节的long要广?
2021 Huawei Cup Mathematical Modeling Contest E question - Ultra-Wideband (UWB) precise positioning problem under signal interference
【TCP 和 UDP 基本原理】
随机推荐
tab 替换空格
【交换机端口安全技术 】
IDEA如何进行远程Debug
js电梯导航基础案例
自定义属性
Scala的模式匹配与样例类
MATLAB文件操作
小知识点系列:数组与多维数组
XML和注解(Annotation)
【数据读写】csv文件与xls/xlsx文件
【js手风琴效果案例】
【SVM回归预测】基于LibSVM实现多特征数据的预测
2021 Huawei Cup Mathematical Modeling Contest E question - Ultra-Wideband (UWB) precise positioning problem under signal interference
2022-07-26 第六小组 瞒春 学习笔记
Redis的5中数据类型总结
MATLAB中dist与pdist、pdist2的区别与联系
网络运维系列:GoDaddy Shell DDNS配置
DOM —— 事件类型
Object.defineProperty方法(详解)
Servlet 技术1