对大小端模式,内存地址高低位,寄存器高低位

CPU:大小端模式的区别:
      大端模式(Big-endian),是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
      小端模式(Little-endian),是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

    内存地址高地的理解:
    我们对内存表的高位和低位的理解,就可以想做这里就是一张白纸.  我们把每个空格都当作一个位置,从0~1000开始计数,写在最前的就是低位,
        比如说写四个数,从0~3 . GAME数据的低位~高位就是从G到M.
    寄存器高位低位的理解:
        之后呢,我们从内存表中区数据,放入寄存器中,我们可以把寄存器比做一个水桶,我们放入数据的时候肯定是把"水"先倒到水筒的底部.
        如我们从内存中区GAME放入到水桶中的话 水桶中存放的数据就成了EMAG 也就是 45 4D 41 47 (注意每个字节是两个16进制的字符)
        而水桶的高位和地位呢,想必大家会很明白,水桶的最上方就是高位,水桶底就是低位,所以EMAG 数据的高低位就是 E~G(E为最高位 G为最低位)
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。
    我们常用的X86结构是小端模 式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式
可以用下面的程序测试:
    int checkSystem( )
    {
           union check
           {
            int i;
            char ch;
           } c;
          c.i = 1;
          return (c.ch ==1);
    }
    如果当前系统为大端模式这个函数返回 0;如果为小端模式,函数返回 1。

你可能感兴趣的:(IOS)