1.大端小端区分
大小端模式就是存储数据时,数据的高低位怎么存储在地址的高低位上。(位指的是bit,一个char类型数据有8位)
大端模式:数据的高位,存放在地址的低位。(高位存低位,低位存高位)
小端模式:数据的高位,存放在地址的高位。(高位存高位,低位存低位)
我们的pc机一般都是小端模式,个人感觉这也更符合我们的习惯,在地位置的就是低位数据
(1) 位移方法判断
#include <stdio.h>
#define BigorLittle(k) (((k) >> 8) ? (printf("Big!\n")):(printf("Little!\n")))
int main(int argc, char * argv[])
{
unsigned short a = 2;
BigorLittle(a);
return 0;
}
如果1存放在高位,右移8位后1还是存在的;如果1存放在低位,右移8位后1将被移出数据,所以不存,结果为0。
地址: 高地址 <<====== 低地址
小端模式存放:0000 0001 >> 8 == 0000 0000
大端模式存放:1000 0000 >> 8 == 0000 1000
(2) 数据类型强制转换
a = 1 ,变成二进制为:0000 0001.强转为char时,保留unsigned short a变量的低8位。所以这样就更加明了了。因为1低位数据,如果char c不为0,表明1存放在低位,即是小端模式;如果char c变量为0,表明1存放在高位,即是大端模式
#include<stdio.h>
int main(void)
{
unsigned short a=1;
char c;
c = (char)a;
(c)?(printf("Little!\n")):(printf("Big!\n"));
return 0;
}