大小端
程序员文章站
2022-07-13 14:27:43
...
1、概念:
大端:数据的高位存放在地址的低位。
小端:数据的高位存放在地址的高位。
pc机一般都是小端模式:
2、如何测试你的机子是大端还是小端:
方法一:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(void)
5 {
6 int a=1;
7 a=a>>8;
8 if(a==0)
9 {
10 printf("小端!\n");
11 }
12 else
13 {
14 printf("大端!\n");
15 }
16 return 0;
17 }
高地址<===========低地址
大端存放数字1:1000 0000
小端存放数字1: 0000 0001
将数字1右移8位后:
大端:0000 1000
小端:0000 0000
所以可以判断右移8位以后数字的取值来判断到底是大端还是小端
方法二:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(void)
5 {
6 int a=1;
7 char c=(char)a;
8 if(c!=0)
9 {
10 printf("小端\n");
11 }
12 else
13 printf("大端\n");
14 return 0;
15 }
原理:
高地址<===========低地址
大端存放数字1:1000 0000
小端存放数字1: 0000 0001
将整形数据1,强制转换为char型时:
大端:0000;
小端:0001;
方法三:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 typedef union Test{
5 int a;
6 char b;
7 }T;
8
9 int main(void)
10 {
11 T t;
12 t.a=1;
13 (t.b)?(printf("小端\n")):(printf("大端\n"));
14 return 0;
15 }
方法 三的原理何和方法二原理差不多,只不是这里使用了联合体,联合体里面的变量共享一个内存空间
上一篇: 如何判断一个机器的大小端呢?
下一篇: 华为2020届实习生笔试第二题