测试自己的系统是大端还是小端
2013-10-14 14:56
302 查看
BIG ENDIAN:最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。最高位字节放最前面。
LITTLE ENDIAN:最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。最低位字节放最前面。
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。
对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:
注: 0x前缀代表十六进制。
数据以8bit为单位:
示例中,最高有效位(MSB, Most Significant Byte)是0x0A 存储在最低的内存地址处。下一个字节0x0B存在后面的地址处。正类似于十六进制字节从左到右的阅读顺序。
数据以16bit为单位:
测试大端小端的C代码:
代码执行结果:
由上面的输出结果可以判断出当前的系统是小端法。
LITTLE ENDIAN:最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。最低位字节放最前面。
对于单一的字节(a byte),大部分处理器以相同的顺序处理位元(bit),因此单字节的存放方法和传输方式一般相同。
对于多字节数据,如整数(32位机中一般占4字节),在不同的处理器的存放方式主要有两种,以内存中0x0A0B0C0D的存放方式为例,分别有以下几种方式:
注: 0x前缀代表十六进制。
数据以8bit为单位:
地址增长方向 → | |||||
... | 0x0A | 0x0B | 0x0C | 0x0D | ... |
数据以16bit为单位:
地址增长方向 → | |||
... | 0x0A0B | 0x0C0D | ... |
#include <stdio.h> int main() { int i=0x12345678; char*p = (char *)&i; if(*p == 0x78) { printf("Litle endian\n"); } printf("p=%x\n",p);//当前指针变量的值(指向的地址) p++;//指针自增 printf("p++之后,p=%x\n",p);//验证指针自增以后的值(重新指向的地址) if(*p == 0x56) printf("Litle endian\n"); printf("sizeof(p)=%d \n",sizeof(p)); //测试指针变量所占的字节数,in fact,在win32平台上,任何类型的指针变量所占的字节数均为4. p =NULL; return 0; }
代码执行结果:
由上面的输出结果可以判断出当前的系统是小端法。
相关文章推荐
- 测试系统存储是大端模式还是小端模式的方法
- 【C语言深度剖析】测试系统存储是大端模式还是小端模式的方法
- 如何测试你的系统是大端还是小端模式
- 如果测试自己的编译器打是大端还是小端
- C++学习---一道笔试题:测试当前电脑系统是大端存储还是小端存储数据
- 判断电脑是大端系统还是小端系统
- 用编程来判断系统是大端还是小端
- 查看自己机器是小端还是大端
- C语言(如何测试计算机为大端还是小端)
- 如何测试你的平台是大端字节序还是小端字节序
- [基本] 写一个程序辨别系统是大端还是小端程序
- 测试计算机是小端存储还是大端存储
- 测试一台电脑的存储是大端模式还是小端模式
- 笔试面试7 如何判断一个系统的存储方式是大端还是小端
- 判断系统CPU是大端还是小端
- 测试内存规范是大端还是小端
- 如何使用程序判断系统是大端还是小端?
- 【编程1】写一个函数判断系统是大端还是小端
- 测试本机的数据存储形式——大端还是小端
- c 实现测试CPU是大端还是小端