大端模式和小端模式学习笔记

大端模式(Big Endian)和小端模式(Little Endian)是用于描述多字节数据在内存中存储顺序的两种方式。

大端模式(Big Endian):
在大端模式下,多字节数据的高位字节存储在低地址,低位字节存储在高地址。也就是说,数据的字节顺序与内存地址的增长方向相反。例如,对于一个 4 字节的整数值0x12345678,它在内存中的存储顺序如下:

地址: 0x1000   0x1001   0x1002   0x1003
数据:  0x12     0x34     0x56     0x78

小端模式(Little Endian):
在小端模式下,多字节数据的低位字节存储在低地址,高位字节存储在高地址。也就是说,数据的字节顺序与内存地址的增长方向相同。例如,对于同样的 4 字节整数值0x12345678,在小端模式下它在内存中的存储顺序如下:

地址: 0x1000   0x1001   0x1002   0x1003
数据:  0x78     0x56     0x34     0x12

在计算机系统中,大端模式和小端模式的选择是由处理器架构和操作系统决定的。x86 架构的处理器一般采用小端模式(c语言就是小端模式),而一些其他架构如 PowerPC、ARM 等可以采用大端或小端模式,具体取决于硬件和操作系统的配置

使用32位编译情况下,给出判断所使用机器大小端的方法:

法一:

联合体方法判断方法:利用union结构体的从低地址开始存,且同一时间内只有一个成员占有内存的特性。大端储存符合阅读习惯。联合体占用内存是最大的那个,和结构体不一样。a和c公用同一片内存区域,所以更改c,必然会影响a的数据

#include<stdio.h>
int main(){
union w
{
int a;
char b;
}c;
c.a = 1;
if(c.b == 1)
printf("小端存储\n");
else
printf("大端存储\n");
return 0;
}

法二:

指针方法:通过将int强制类型转换成char单字节,p指向a的起始字节(低字节)

#include <stdio.h>
int main ()
{
int a = 1;
char *p = (char *)&a;
if(*p == 1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值