面试题目
来源:互联网 发布:金山数据恢复大师 编辑:程序博客网 时间:2024/06/06 03:27
中国电子科技集团公司第三研究所--嵌入式
C编程实现判断电脑大小端?
大端模式,是指数据的高位保存在内存的低地址中,而数据的低位,保存在内存的高地址中;小端模式相反。
(和十进制的类似,左边的高位,右边的是地位)
对于16Bit的整数:0x1234存放到CPU中,采用大小端存储如图所示:
对于32Bit的整数:0x12345678存放到一个整型变量int中。采用大端和小端存储如图所示:
采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。
在计算机系统中,我们是以字节为单位存储的,每个地址单元都对应一个字节,一个字节是8Bit。在C语言中,有一个字节的char类型,有两个字节的short int,也有4个字节的int类型。必然存在着多个字节的安排问题,因此就导致了大端存储和小端存储的模式。
方法一
对于用C判断大小端问题,可以定义变量并且赋值0x1234,我们通过读取内存低位的值,如果是数据的高位,则是大端模式,否则是小端模式。
#include <stdio.h>int main(){ short int x; char x1,x2; x = 0x1122; x1 = ((char *)&x)[0]; //低地址 x2 = ((char *)&x)[1]; //高地址 if(x1 == 11) printf("大端模式\n"); else printf("小端模式\n"); return 0;}
方法二
联合体union的存放顺序是所有成员都从低地址开始存放,而且所有成员共享存储空间
#include<stdio.h>union temp{ short int a; char b;}temp;int main(){ temp.a = 0x1234; if(temp.b == 0x12) //低字节存的是高字节数据 printf("大端模式"); else printf("小端模式"); return 0;}方法三
和方法一一样,short int 占2个字节,char占一个字节,把short int 变量赋值给 char 变量,如果char 变量得到的是高位则是小端,如果得到是低位,则是大端。方法一通过指针,方法三直接是赋值。
#include<stdio.h>int main(){ short int i = 0x1234; char c = i; if(c == 12) printf("大端模式"); else printf("小端模式"); return 0;}
阅读全文
0 0
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- 面试题目
- hostapd_cli
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- 压缩感知算法实现的曲折
- 给 Android 开发者的 RxJava 详解
- JQUERY barcode 生成条码,可以配置大小颜色
- 面试题目
- Jgit实现克隆,切换分支,提交操作
- 因js文件多了一个*/导致js文件中document.ready不执行
- mqtt-client回调方法简介
- HSSFCellStyle.ALIGN_CENTER报错
- js工作总结杂记
- 线程同步和安全
- 获取mysql系统时间的三种方法
- 初识java反射机制