用C语言实现判断PC大小端
来源:互联网 发布:女包淘宝网 编辑:程序博客网 时间:2024/05/16 07:39
(1)采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位(一个字节大小)存放在低地址,小端方式将低位存放在高地址(储存都是一个一个字节的)。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char(这种数据刚好是储存一个字节)之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
(2)在32 位的系统上
char 咔出来的内存大小是1 个byte。
short 咔出来的内存大小是2 个byte;
int 咔出来的内存大小是4 个byte;
long 咔出来的内存大小是4 个byte;
float 咔出来的内存大小是4 个byte;
double 咔出来的内存大小是8 个byte;
(注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下)
如果将一个16位的整数0x1234存放到一个短整型变量(short:占两字节)中。这个短整型变量在内存中的存储在大小端模式由下表所示。(储存总是从低字节开始,也就是说一个储存区首地址是指其最低地址)
地址偏移
大端模式
小端模式
0x00
12(OP0)
34(OP1)
0x01
34(OP1)
12(OP0)
(3)程序
程序1:
- #include <stdio.h>
- int main()
- {
- short int x;
- char x1,x2;
- x = 0x1122;
- x1 = ((char *)&x)[0]; //低地址
- x2 = ((char *)&x)[1]; //高地址
- printf("x1=%x\n",x1);
- printf("x2=%x\n",x2);
- return 0;
- }
若x1=0x11,则是大端; 若x2=0x22,则是小端......
或:程序2:
点击(此处)折叠或打开
- #include<stdio.h>
- int main()
- {
- int x = 1;
- char *p = (char *)&x; //p指向x的首地址(最低地址)
- if(*p)
- {
- printf("little\n");
- }
- else
- {
- printf("large\n");
- }
- return 0;
- }
- 用C语言实现判断PC大小端
- 用C语言实现大小端判断
- 用C语言实现大小端判断
- 用C语言实现大小端判断
- 用C语言实现大小端判断
- 用C语言实现大小端判断
- 【C语言】大小端判断。
- C语言判断大小端
- 用C语言判断系统大小端模式
- 【Linux编程】用c语言判断大小端
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言——用联合体判断大小端
- C语言大小端判断程序
- C语言,判断机器大小端
- c 语言大小端格式判断
- C语言判断大小端模式
- 练习:超链接的单选效果 表格隔行变色
- 知识库构建-Knowledge Base
- Tkinter基础
- 使用codelite搭建stm32开发环境
- 【备份专题】备份软件方案可靠性解析
- 用C语言实现判断PC大小端
- Java IO之File类
- 关于数据类型转换的小结
- C#基础
- HDU1576-A/B(乘法逆元+exgcd)
- SJGestureUnlock快速集成手势解锁
- 数论 FZU 1759 Super A^B mod C
- javascript关于层的操作
- [iOS]SDWebImage 源码阅读(二)缓存