整数和浮点数在内存中的存储

目录

在学习整数与浮点数在内存中储存的简单个人见解

1.整数在内存中的存储

整数的二进制表示形式有三种:原码,反码和补码。

而正数与负数的原码反码补码的计算方法不同。

以1为例子:

例子1:正1负1
原码00000000000000000000000000000011000000000000000000000000000001
反码000000000000000000000000000000111111111111111111111111111111111110
补码000000000000000000000000000000111111111111111111111111111111111111

这三种表示方式均由符号位和数值位两部分组成,符号位为最高位,0为”正“,1为”负“。

正数原码反码补码都相同。

而负数的原码反码补码取值方法如下:

原码:直接将数值翻译成二进制数所得到的就是原码;

反码:原码符号位不变,其他位按位取反;(0变1,1变0)

补码:反码基础上+1;

在计算机系统中,数值都是用补码形式来表示和储存的。

2.大小端字节存储和字节序判断

大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。(低位存高址)

小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。(低位存低址)

为什么会有大小端之分?

历史原因:在计算机发展的早期阶段,不同的处理器厂商采用了不同的字节序,导致在数据交换和通信时出现了问题。为了解决这个问题,需要有大小端之分。

数据交换:在进行数据交换或通信时,如果双方的字节序不一致,就需要进行字节序的转换,否则会导致数据解析错误。

硬件兼容:不同的硬件架构可能采用不同的字节序,为了保证软件在不同平台上的兼容性,需要考虑大小端问题。

总之,大小端之分主要是为了解决不同处理器和硬件架构之间的兼容性和数据交换的问题。

————————————————
版权声明:本文为CSDN博主「cookies_s_s」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cookies_s_/article/details/134710528

3.浮点数在内存中的存储

浮点数与整数在内存中储存方式不同,用浮点数输出int类型的值时,偶尔会出现数据不同的错误。

根据IEEE754(电气电子工程师学会)规定,任意一个二进制浮点数V可以表示成下面的形式:
V = (-1)^S * M * 2^E
其中(-1)^S表示符号位,当S=0时,V为正数,当S=1时,V为负数
M表示有效数字,M是大于1小于2的
2^E表示指数位
举个例子,十进制的6.0,二进制为110.0,根据上面规则即为110.0=(-1)^0 * 1.10 * 2^2
S=0;M=1.10;E=2.
十进制的-6,二进制为-110.0,即为-110.0=(-1)^1 * 1.10 * 2^2
S=1;M=1.10;E=2

————————————————
版权声明:本文为CSDN博主「cookies_s_s」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cookies_s_/article/details/134710528

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值