大小端字节序和字节序判断

在内存中存储的时候,超过一个字节的数据就有存储顺序的问题了。

按照存储顺序,我们可以分为大端字节序存储和小端字节序存储。

大端相反,小端一致。

在内存里,变量被存储在栈区,内存中的高地址被优先使用,而取出一个变量时,低地址的字节被优先提取:

在VS2022调用内存窗口可知: 

 

变量a的存储是倒着存储的,即低字节位先进入栈区的高地址位,所以我当前的编译环境是大端模式。

我们也可以通过代码来判断自己目前是大端模式还是小端模式:

只需在内存中存入一个整型1,再强制转换成字符类型char,最后进行解引用操作,这样输出的就是一个字符,因为1的二进制码为1,如果此时输出的为1,那么就是小端模式。

//#define _CRT_SECURE_NO_WARNINGS
大小端字节序和字节序判断
#include<stdio.h>
int check() {
	int i = 1;//0x00000001
	return (*(char*)&i);//取单个字节
}
int main()
{
	int ret = check();
	if (ret == 1) {
		printf("小端机器");
	}
	else {
		printf("大端机器");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值