MSB和LSB、大端和小端、STM32和C51

1. MSB和LSB

含义一:

  • MSB(Most Significant Bit):最高有效位
  • LSB(Least Significant Bit):最低有效位
// 8位二进制数 10000001
// MSB最高有效位 = 1
// LSB最低有效位 = 1

含义二:

  • MSB(Most Significant Byte):最高有效字节
  • LSB(Least Significant Byte):最低有效字节
int a = 0x12345678
// MSB最高有效字节 = 0x12
// LSB最低有效字节 = 0x78

2. 大端和小端

  • 大端:高字节存放到内存的低地址,低字节存放到内存的高地址
  • 小端:高字节存放到内存的高地址,低字节存放到内存的低地址
    在这里插入图片描述
    大端:最高有效字节0x12存放到低地址
    小端:最低有效字节0x78存放到低地址

利用共用体union判断系统大小端

union my_union
{
	int a;   //int类型占用4个字节
	char b;  //char类型占用1个字节
};
 
// 小端模式则返回1,大端模式则返回0
int detect_endian_1(void)
{
	union my_union u1;
	u1.a = 0x12345678;	
    if(u1.b == 0x78)  //低地址字节是0x78(小端)
        return 1;
    else if(u1.b == 0x12)  //低地址字节是0x12(大端)
	    return 0;
}

利用指针判断系统大小端

int detect_endian_2(void)
{
	int a = 0x12345678;
	char b = *((char *)(&a));	// 取低地址所存放值
	if(0x78 == b) //低地址字节是0x78(小端)
        return 1;
    else if(0x12 == b) //低地址字节是0x12(大端)
	    return 0;
}

3. STM32和C51大小端模式

STM32:小端模式
STM8:大端
C51:大端
x86:小端
ARM:既可以工作在大端模式,也可以工作在小端模式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值