C笔试题

1、编写一个简单函数检查处理器是 big-endian 还是 little-endian。

1.1、定义

  little-endian  就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端;

  big-endian    就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端;

  网络字节序  TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。

1.2、思路

  由于联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little- endian还是Big-endian模式读写。

 1 #include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     union MyUnion
 6     {
 7         unsigned int a;
 8         unsigned char b;
 9     };
10     
11     union MyUnion test;
12     test.a = 1;
13     printf("%d\n", test.b);//1:little-endian 0:big-endian
14 
15     return 0;
16 }

 

  如上图,我的处理器是 little-endian。

猜你喜欢

转载自www.cnblogs.com/yangzx/p/10828323.html