数据在内存中的存储

一、整数在内存中的存储

整数的二进制表示方法有三种:原码、反码、补码

有符号的整数,最高位为符号位,其他位为数值位,符号位为0表示为正数,符号位为1表示负数。

正整数的原码、反码和补码相同,而负整数的反码为将原码的符号位不变,其余位按位取反,补码为反码加1。

对于整数来说,数据存放内存中存放的为补码。

二、浮点数的存储

相信大家遇见过浮点数小数位部分丢失的情况。这是因为浮点数在内存中的存储方式与整数不同。根据国际标准IEEE754,任意一个二进制浮点数可表示为下面的形式。

这就意味着,浮点数的存储,实际上存储的是S M E三个数。

按规定,32位浮点数最高一位存储S,接下来的八位存储E,剩下的23位存储M

64位浮点数最高一位存储符号S,接下来的11位存储E,剩下的52位存储M

而浮点数取出来的情况还有三种:

第一种:E不全为零或E不全为一,则浮点数将E减去127(1023),得到真实值,再将有效数字M前加上第一位的1.

第二种:E全为零 有效数字M不再加上第一位的1,而是还原为0.xxxx的小数。

第三种:E全为1,如果有效数字M全为0,则表示无穷大或无穷小。

三、大小端字节序

⼤端: 是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。
⼩端: 是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。
我们可以写一个简单的程序来判断大小端:
#include<stdio.h>
union byte {
	char c;
	int n;
}a;
int main()
{
	a.n = 1;
	if (a.c == 1)
		printf("小端存储");
	else
		printf("大端存储");
	return 0;
}

 以上就是本篇博客全部内容,如果这篇博客对你有帮助的话,请点赞收藏关注哦!

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值