【C语言】整数和浮点数在内存中的存储
创始人
2024-11-11 05:03:33
0

目录

  • 整数在内存中的存储
    • 整数的3种二进制表示形式
  • 浮点数在内存中的存储
    • 浮点数存储过程
      • M的存储
      • E的存储
      • E的取出3种情况
      • 浮点数存储的不精确性

在这里插入图片描述

整数在内存中的存储

要介绍整数在内存中的存储就要先介绍整数的二进制表示形式。

整数的3种二进制表示形式

  1. 原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。 例如 5的二进制原码就是00000101;-5的二进制原码就是10000101。

  2. 反码:将原码符号位不变其余依次按位取反。 例如 5的二进制反码就是01111010;-5的二进制反码就是11111010。

  3. 补码:反码加1得到补码。 例如 5的二进制反码就是01111011;-5的二进制反码就是11111011

    声明:在3中表示形式中第一位都是符号位,0表示正,1表示负。 对于整数来说,在内存中存储的就是补码。

浮点数在内存中的存储

根据国际标准IEEE(电气和电子工程协会)754,一个浮点数V可以表示为
在这里插入图片描述
例如:5.5写成二进制为101.1,相当于1.011*2^2。即S = 0, M = 1.011, E = 2。

-5.5写成二进制为-101.1,相当于(-1)^ 11.0112^2。即S = 1, M = 1.011, E = 2。

IEEE 754规定32位浮点数最高一位存储符号位S,接着8位储存指数E,剩下23位存储有效数字M。

IEEE 754规定64位浮点数最高一位存储符号位S,接着11位储存指数E,剩下52位存储有效数字M。
在这里插入图片描述

浮点数存储过程

S的存储没有什么好说的直接存储就行。

M的存储

像平时我们的10进制中的科学计数法类比过来就好理解了。M的范围是1~2,所以M永远是1.XXXX, 1永远有,所以存储进内存时1会舍去只保留小数点后的数,读取时再加回来。

E的存储

根据上面E的存储字节是8和11,所以范围是0~255 和 0 ~ 2047,但是如果是这样的话E只能是正数,但是科学计数法中E是可以为负数的。

因此IEEE 754规定了一个中间值来完成这个操作。分别是127和1023。

在将E存储进内存前会先加上中间数。E的取出因此也会不同。

E的取出3种情况

E的取出3种情况如下:

  1. E全为1:这时如果M为0就表示无穷大。0 1111111100010000000000000000000。

  2. E全为1: 1减去127或者1减去1023这之后作为指数求值都极小,所以表示0。

  3. 其余情况就正常减去中间值就行。

浮点数存储的不精确性

通过以上介绍我们可以知道并不是任何一个浮点数都是可以完全准确的表示出来的。

可以尝试一下将3.14转换一下,如果你准确将其存入私信我V你50。

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...