大小端是什么?怎么测试当前机器是大端还是小端

大端和小端是什么?

大端存储模式:就是内存的低地址上存着数据的高位,高地址上存着数据的低位。

小端存储模式:就是内存的低地址上存数据的低位,而高地址上存数据的高位。

为什么要有大小端?

在计算机系统中,规定:每个地址单元都会对应一个字节(8个bit),但是,在c语言中,除了有一个字节(8个bit)的char,也有两个字节(16个bit)的short,也有四个字节(32个bit)的long(在不同的编译器下可能不同)。对于16位或者32位的处理器,即就是大于8位的处理器,由于寄存器的宽度大于一个字节,那么就存在如何将一个多字节的变量的数据如何存放的问题——所以,就有了大小端之分。

如何测试当前机器是大端还是小端

//1.利用当前一个高类型的变量给其赋值,然后取到其低地址,查看其存储的数据。
#include<stdio.h>
void CheckSystem1()
{
	int a = 1;
	int num = (*(char*)&a);//&a 取出a的地址;  (char*)&a 代表a变量地址的第一个字节的地址
	printf("%d\n", num);//(*(char*)&a) 解引用取出第一个字节保存的内容
	if (num == 1)
		printf("小端\n");
	else
		printf("大端\n");
}
int main()
{
	CheckSystem1();
	getchar();
	return 0;
}
//2.联合体特性
int CheckSystem2()
{
	union check
	{
		int num;
		char a;//2个变量公用一块内存空间,并且2个变量的首地址相等
	}b;
	b.num = 1;//1存放在变量num的低位
	return (b.a == 1);//当变量a=1,相当于将数据的低位存到了内存的低地址处,即小端模式
}
int main()
{
	int c = CheckSystem2();
	printf("c : %d\n", c);
	getchar();
	return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值