【笔试题】如何判断主机是大端还是小端(字节序)
2013-06-22 12:02
302 查看
转自:http://blog.csdn.net/forestLight/article/details/6933528#comments
今天看《linux程序设计》中关于跨平台需要注意的事项,看到了大端小端的问题。突然想起实验室一同学的笔试题,如何判断主机的大端还是小端。
所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如0x12345678在大端机上是12345678,在小端机上是78564312,而一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。
测试大小端一般使用union的特性。union是一个联合体,所有变量公用一块内存,只是在不同的时候解释不同。其在内存中存储是按最长的那个变量所需要的位数来开辟内存的。
今天看《linux程序设计》中关于跨平台需要注意的事项,看到了大端小端的问题。突然想起实验室一同学的笔试题,如何判断主机的大端还是小端。
所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如0x12345678在大端机上是12345678,在小端机上是78564312,而一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的x86+windows是小端。
测试大小端一般使用union的特性。union是一个联合体,所有变量公用一块内存,只是在不同的时候解释不同。其在内存中存储是按最长的那个变量所需要的位数来开辟内存的。
#include <iostream> using namespace std; union { int number; char s; }test; bool testBigEndin() { test.number=0x01000002; return (test.s==0x01); } void main() { if (testBigEndin()) cout<<"big"<<endl; else cout<<"small"<<endl; }
相关文章推荐
- [笔试题] 如何判断主机是大端还是小端(字节序)
- [笔试题] 如何判断主机是大端还是小端(字节序)
- 如何判断主机是大端还是小端(字节序)
- 如何判断主机是大端还是小端(字节序)
- 用C语言,如何判断主机是 大端还是小端(字节序)
- 用C语言,如何判断主机是 大端还是小端(字节序)
- 面试笔试题4--如何判断主机是大端小端?
- 笔试面试7 如何判断一个系统的存储方式是大端还是小端
- 如何写程序判断自己电脑是大端字节序还是小端字节序?
- 如何判断计算机是大端还是小端
- 如何判断CPU是大端还是小端模式
- 如何判断你的机器是大端还是小端的?
- 如何判断CPU是大端还是小端
- Java中如何判断当前环境是大端字节顺序还是小端字节顺序
- 如何判断机器是大端还是小端
- 用联合体判断机器是大端字节序还是小端字节序
- 如何判断机器CPU是大端模式还是小端模式
- 判断主机是大端还是小端
- 如何判断CPU是大端还是小端模式
- 如何判断CPU是大端还是小端模式