当前位置: 首页 > news >正文

整型数据与浮点型数据在内存中的存储方法

整型数据与浮点型数据在内存中的存储方法

  • 1、整型数据在内存中的存储方法
    • 1.1、原码、反码、补码
    • 1.2、大、小端
      • 1.2.1、引子
      • 1.2.2、概念
  • 2、浮点型数据在内存中的存储方法
    • 2.1、存储的方法
    • 2.2、取的方法
      • 2.2.1、E不全为0,或E不全为1
      • 2.2.2、E全为0
      • 2.2.3、E全为1

1、整型数据在内存中的存储方法

int类型数据为例,整型数据在内存中以二进制序列的形式存储。

1.1、原码、反码、补码

正数原码、反码、补码相同,都是直接将数字转化为32位二进制序列。

int类型数据-13为例,环境以x32为准。

对于负数:

类型含义13对应的序列
原码直接将数字转化为二进制序列10000000000000000000000000001101
反码原码除符号位外,其余按位取反11111111111111111111111111110010
补码反码+111111111111111111111111111110011

而补码也可以不通过逆向方法得到原码,而是先取反,后==+1==。

1.2、大、小端

1.2.1、引子

#include<stdio.h>int main()
{int a = 0x11223344;return 0;
}

在内存窗口看看&a:
无
我们会发现,vs 2022中内存从低到高,排列依次为44 33 22 11

为什么会这样,看起来是反着来的?

这个时候,就要了解大小端的概念。

1.2.2、概念

大端:数据的低位存储到内存的高地址处,数据的高位存储到内存的低地址处。
小端:数据的低位存储到内存的低地址处,数据的高位存储到内存的高地址处。

我们也可以设计一段代码,来判断当前机器是大端,还是小端:

#include<stdio.h>int sys_check()
{int a = 1;return *((char*)&a);
}int main()
{int ret = sys_check();if (1 == ret){printf("小端\n");}else{printf("大端\n");}return 0;
}

2、浮点型数据在内存中的存储方法

浮点型数据的存储方法,与整型不同。

2.1、存储的方法

根据国际标准IEEE(电气电子工程师学会)754,任意一个二进制浮点数V,可以表示成下面的形式:

V = ( − 1 ) S ∗ M ∗ 2 E . V = (-1)^S*M*2^E. V=(1)SM2E.

· S代表该数的正负,S = 0为正,S = 1为负。
· M的范围:1 <= M < 2
· E代表数量级。

例如,-9.5
转化为二进制:-1001.1
用公式表达:(-1)^(1)*1.0011*2^3
其中,S = 1 M = 1.0011 E = 3

32位机器,从左往右,第一位符号位,后8位存E,剩余位存M
64位机器,从左往右,第一位符号位,后11位存E,剩余位存M

以32位的-9.5为例:

  1. 负数,第32位1

  2. 第31~24位,并不是直接存储3的二进制序列,而是先3 + 127 = 130(64位,就加1023),存130,也就是说,存10000010

  3. 剩下位,去掉小数点左边1,也就是存0011,后面补19个0

所以结果:

11000001000110000000000000000000 11000001000110000000000000000000 11000001000110000000000000000000

转化为十六进制数,为:
C 1180000 C1 18 00 00 C1180000

是不是呢:
无
由于vs 2022小端,所以看起来是反着来的。

2.2、取的方法

2.2.1、E不全为0,或E不全为1

就是常规方法,根据上面操作,反过来。

2.2.2、E全为0

这时,E就是1 - 127 = -1261 - 1023 = 1022M就不要加回1,而是0.xxxxxxxx

这样做,是为了表示正负0,以及接近0的很小的值。

2.2.3、E全为1

此时,E就很大了,表示正负无穷。

http://www.dtcms.com/a/490827.html

相关文章:

  • 集合知识点,java学校课
  • 构建AI智能体:六十五、模型智能训练控制:早停机制在深度学习中的应用解析
  • 递归-21.合并两个有序链表-力扣(LeetCode)
  • 中国八大菜系视频课(共800道菜品)
  • 【流式输出】基于Vue实现增量渲染
  • 秦皇岛网站制作费用sns网站社区需求分析文档
  • 【AI论文】面向高效规划与工具使用的流程内智能体系统优化
  • html好看的网站的代码网站加图标
  • conda常用命令pip、venv
  • Visual Studio 2022查看程序变量和堆栈
  • RabbitMQ消息传输中Protostuff序列化数据异常的深度解析与解决方案
  • SSH连接服务器超时?可能原因与解决方案
  • iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
  • Visual Studio下的内存安全检测:CRT 内存泄漏 AddressSanitizer
  • iOS混淆与IPA文件加固深度解析,从反编译风险到苹果应用安全工程实践
  • 眉山建设中等职业技术学校 网站公司网页制作费用大概要多少钱?
  • 张店网站制作首选专家计算机大专生的出路
  • 万网的网站建设广州互联网公司集中在哪个区
  • 数据安全系列7:常用的非对称算法浅析
  • uniapp微信小程序+vue3基础内容介绍~(含标签、组件生命周期、页面生命周期、条件编译(一码多用)、分包))
  • 微信小程序报错 ubepected character `的style换行问题
  • H5封装打包小程序助手抖音快手微信小程序看广告流量主开源
  • 金华建设局网站做爰片在线看网站
  • 如何做二维码链接网站虚拟空间的网站赚钱吗
  • 营业部绩效考核方案与管理方法
  • 光刻刻蚀工艺控制要点及材料技术进展与限制
  • VPS SSH密钥登录配置指南:告别密码,拥抱安全
  • 注入“侨动力” 锻造“湘非链”
  • 做网站自己申请域名还是建站公司菏泽最好的网站建设公司
  • 网站建设方面书籍温州网站建设案例