大小端模式的快速判断方法
***************************************************
更多精彩,欢迎进入:http://shop115376623.taobao.com
***************************************************
大小端的问题剖析:
嵌 入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是 从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian 模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 |
0x4000 |
0x4001 |
存放内容 |
0x34 |
0x12 |
而在Big-endian模式CPU内存中的存放方式则为:
内存地址 |
0x4000 |
0x4001 |
存放内容 |
0x12 |
0x34 |
我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
以下这段代码可以用来判断当前处理器的大小端模式
#include<stdio.h>
void main()
{
int a = 0x01;
char * p = (char*) & a;
if(*p == 1)
{
printf("little endian\n");
}
else
{
printf("big endian\n");
}
}
大小端存储问题,如果小端方式中(a 占至少两个字节的长度)则 a 所分配的内存最小地址那个字节中就存着1,其他字节是0.大端的话则1在 a 的最高地址字节处存放,char是一个字节,所以强制将char型量p指向a则p指向的一定是a的最低地址,那么就可以判断p中的值是不是1来确定是不是小端。
大小端模式的快速判断方法相关推荐
- 大小端模式以及两种判断方法
文章目录 基本概念 判断方法 END 基本概念 首先来看某百科定义: 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中. 小端模式,是指数据的高字节保存在内存的高地址 ...
- 大小端模式的判断方法
1. 大小端模式 大端模式:数据的高字节存储在内存的低地址中. 小端模式:数据的低字节存储在内存的低地址中. 两种模式的区别就是数据在内存中是先存储高字节还是低字节,先存高字节就是大端模式,先存低字节 ...
- 判断cpu大小端模式(c++代码实现)
首先来了解一下大小端模式. 大端模式:高位对应低地址,低位对应高地址 :换而言之,就是数字的高位存放在内存的低址地,低位存放在内存的高地址 小端模式:高位对应高地址,低位对应低地址 :即数字的高位存放 ...
- C语言中低位存放,C语言 大端小端存储解析以及判断方法
当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...
- C语言程序设计 | 大端小端存储解析以及判断方法
当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() {int i = 1;return 0; } 数据在内存中的存放方式似乎 ...
- CPU大小端模式对C语言底层开发的影响
CPU大小端模式对C语言底层开发的影响 在嵌入式的c语言底层开发过程中,经常会遇到CPU大小端模式的问题,对底层软件的数据结构构建.数据解析.甚至功能实现上均有一定的影响,我自己在ECU的底层软件 ...
- C/C++ 关于大小端模式
大端模式: 数据的高字节存在低地址 数据的低字节存在高地址 小端模式: 数据的高字节存在高地址 数据的低字节存在低地址 如图,i为int类型占4个字节,但只有1个字节的值为1,另外3个字节值为 ...
- .pgr照片文件解析,C++与Java存储数据差别大小端模式
一..pgr是什么? .pgr文件是二进制的图像文件,可以用普通的文本文件打开,或者查看十六进制的文本信息: 读取需要了解~~~非常重要 !!! 基本数据类型的大小端存储模式 表头Header 详细信 ...
- Linux系统的大小端模式
大端模式 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数 ...
最新文章
- C++中的两种绑定方式(静态绑定、动态绑定)
- ARM Linux 3.x的设备树(Device Tree)【转】
- 自定义Exchange2003未送达报告(NDR)
- 【Tools】VNC Viewer 6.20安装详解
- 7.程序员的自我修养---动态链接
- 雷达信号处理读书笔记
- sql Server配置管理器
- matlab中gen2par函数,R语言中的par()函数终于明白了
- matlab指数e是如何表示,Matlab中表达e怎么操作?表达e方法详解
- 期货卖出平仓价和买入平仓价(期货平仓价和结算价)
- LaTeX插入视频示例
- plt.xticks()
- 在Win32中使用OpenGL
- 计算机绘制表格教案,《表格的制作》教学设计
- CSS+div布局总结(快速入门,附代码)
- Chrome 谷歌浏览器下载网页中的背景图、图标等
- linux摄像头拍照程序,Android开发:Camera初探——控制摄像头拍照
- 深圳大学算法设计实验五
- Android tv树莓派遥控器,树莓派的kodi设置遥控器的方法
- 数制转换的概念和转换
热门文章
- 详解 springboot - 查看、修改内置 tomcat 版本
- Python基础-time and datetime
- cassandra 环境搭建
- 1837Balance
- 同步数据库仅在Worker内,目前只有Chrome6支持
- 微软发布Enterprise Library 4.1和Unity 1.2
- 终于用上gcc-4.1编译的系统了
- 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup...
- 《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡
- commons-fileupload、smartUpload和commons-net-ftp