数据在内存中的存储

数据在内存中的存储

整数在内存中的存储

数据在内存中都是以二进制的序列存储的,整数的二进制表示方法有三种: 原码、反码、补码。对于有符号数的整数,三种表示方法均有符号位和数值位两部分,正0负1表示。
对于正数,正数的原码反码补码都相同
对于负数,原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码
反码:符号位不变,数值位按位取反。
补码:在反码的基础上数值位加1得到的就是补码。
对于整形来说数据存放在内存中的都是补码。
大小端字节序
什么是大小端字节序?
对于计算机来说有着不同的存储顺序我们分为大端存储模式和小端存储模式
大端存储模式
低地址:放高位,高地址:放地位
小端存储模式
低地址:放低位,高地址:放高位

如何判断计算机是大端还是小端?

#include<stdio.h>
//这里以vs为例在vs中采用的是小端字节序
//给一个16进制位的数字0x11223344在小端字节序中存的方式为  44 33 22 11
//这里的char* p1=a;这里*p1=44  *p2=11  比较若p2>p1则大端反之小端
int sit(int* a) {
	char* p1 = a;
	char* p2 = a + 3;
	if (*p2 > *p1) {
		printf("大端字节序\n");
		return 2;
	}
	else {
		printf("小端字节序\n");
		return 1;
	}
}
int main() {
	int a = 0x11223344;
	int ret = 0;
	ret = sit(&a);
	printf("%d \n", ret);
	return 0;
}

浮点数在内存中的存储

看这样一个代码输出什么?

在这里插入图片描述
输出的会是 9 9.0 9.0 9.0?
在这里插入图片描述

为什么不一样呢?我们来看浮点数在内存中的存储
浮点数在内存中的存储是按照IEEE 754规则存储的
在这里插入图片描述

那么,按照上⾯V的格式,可以得出S=0,M=1.01,E=2。⼗进制的-5.0,写成⼆进制是 -101.0,相当于 -1.01×2^2。那么,S=1,M=1.01,E=2。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值