CPU的大小端模式

大小端模式的定义在百度百科上有明确的说法,意思就是就是数据的高位存储在第地址的是低位的是大端模式,数据的高位存储在地址的低位的就是小端模式。说着也不清楚。我们这里讨论的是CPU的大小端模式而不是通讯协议的大小端。要记住的是现在主流的CPU都是小端模式例如arm等,大端模式的代表是c51系列。还有要知道的是怎么测量当前平台是什么模式一般来说流行的有两种方法一种是用union但这种方法也是基于指针的其实能理解好指针测量的方法就能写出共用体的方法。测量方法如下
int a=1;
char b;
b=((char)(&a));
如果b的值也是1就证明是小端模式,如果b的值是0那么就是大端模式。因为在大端模式下那个1就存储在了第四个字节的地方我们读取的是第一个字节。

原文地址:http://blog.51cto.com/13638458/2339881

时间: 2024-11-09 06:02:09

CPU的大小端模式的相关文章

大小端模式与网络字节序

一.为什么会出现大小端模式? 不同的cpu采用的大小端模式不一致.X86是小端模式.而KEIL C51则为大端模式.很多的ARM,DSP都为小端模式.有些ARM处理器还可以由硬件来选择是大端模式还是小端模式. 二.大小端模式的不同带来的问题是什么?如何解决? 如果存在数据网络传输,如果大小端模式不一致,如果不经过转换,必然会导致数据不致,出现错误. 解决方法:统一将网络上传输的字节序采用同一种模式(大家都知道的),这样收发数据时,就会根据主机对应的模式是否和网络字节对应的模式一致,来判断是否需要

CPU大小端模式及转换

通信协议中的数据传输.数组的存储方式.数据的强制转换等这些都会牵涉到大小端问题. CPU的大端和小端模式很多地方都会用到,但还是有许多朋友不知道,今天暂且普及一下. 一.为什么会有大小端模式之分呢? 因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit. 但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的int型.另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何

从内存中堆栈的分配格局解析大小端模式

今天找了一整天的资料,企图弄懂大小端模式的区别,但是弄了很久还是弄不懂.后面尝试从内存中的分配格局来区别,找了大.小端模式下的内存分配格局进行比较,就弄懂了. 先贴出基本知识: 所谓的大端模式Big-endian,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 所谓的小端模式Little-endian,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储

(转)大小端模式详解

int i=1; char *p=(char *)&i; if(*p==1) printf("1"); else printf("2"); 大小端存储问题,如果小端方式中(i占至少两个字节的长度)则i所分配的内存最小地址那个字节中就存着1,其他字节是0.大端的话则1在i的最高地址字节处存放,char是一个字节,所以强制将char型量p指向i则p指向的一定是i的最低地址,那么就可以判断p中的值是不是1来确定是不是小端. 请写一个C函数,若处理器是Big_end

计算机存储的大小端模式解析

http://blog.csdn.net/hackbuteer1/article/details/7722667 原作者文章链接,写得很好,没必要再重新分析了,看这个就够了.一般在<计算机组成原理>,或者<微机原理>,或者<汇编语言>等课程中也会有介绍,不过没有这么详细透彻罢了.红色笔记是我的注解. --------------------------------------------------------------------------------------

union关键字及大小端模式

1. union 关键字 union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在 union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址.例子如下: union StateMachine { char character; int number; char *str; double exp; }; 一个 union 只配置一个足够大的空间以来容纳最大长度的数据成员,以上例而言,最大长度是 double 型

[Linux] Big-endian and Little-endian (大小端模式)

大小端模式 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致.

大小端模式详解

http://www.cnblogs.com/xinsheng/archive/2012/04/18/2455039.html 端模式(Endian)的这个词出自Jonathan Swift书写的<格列佛游记>.这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象).小 人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian

内存的大小端模式

因为不明白为什么图像的数据会以BGR而不是RGB的方式存放到内存中,扯出了以前在计算机组成原理中学习过的内存大小端模式.记录下来,方便以后再复习. 在计算机系统中,内存的管理以字节为单位,1 byte=8 bit,一个字节的内容在内存中的存放顺序是固定的. 在C语言中,很多类型大小超过了1byte,例如int通常是4byte,多个字节的数据在内存中可以用两种方式对齐来排放,这两种方式就是大端模式和小端模式. 如:0x12345678 其中0x12是高位的数据,0x78是低位数据. 在内存中,可以