网络学习[1]--字节序(大小端)理解

来源:互联网 发布:银行数据统计 编辑:程序博客网 时间:2024/05/16 11:16

1 参考文章

参考文章主要为

http://blog.163.com/shidiankun@126/blog/static/1606147712012116111834473/

http://blog.csdn.net/sunshine1314/article/details/2309655


2 定义

先搞清几个问题

a 什么是高低位: 其实和小学数学减法低位向高位借位的含义是一样的,12345越左位就越高,反之就越低。

b 什么是高低地址: 个人觉得就是一块连续内存有很多地址,地址肯定是从小到大排的,比如从0x4000,0x4001,.....排到0x4199这种,地址越在前面就叫低地址,越往后排就是大地址。

c 存储问题;

     下面谈到如何存放的问题,具体就是数字12345678怎么存到地址上呢?

    1)我自己拍脑壳想的话就是直接扔到内存上去就得了。

         地址----0x4000  0x4001  0x4002  0x4003  0x4004  0x4005  0x4006  0x4007  

         数据----     1              2             3            4             5              6             7            8  

         CPU读取,

                           首先获取内存首地址和块的大小,

                           然后开始读取,在内存上按照从低地址到高地址的顺序(其实也就是地址从小到大),读取1,2,3,4,5,6,7,8

                           读完各个数,CPU就知道是12345678了。

        这是大端存储和读取,就是Motorola的PowerPC干的事情


    2)同样是12345678,还有另一种数据存储和读取方法

         地址----0x4000  0x4001  0x4002  0x4003  0x4004  0x4005  0x4006  0x4007  

         数据----     8              7             6            5             4              3             2            1  

         CPU读取,

                           a)首先获取内存首地址和块的大小,

                           b)不同的事,它从内存末,也就是内存的高地址读取开始往低地址读取,但是读的具体数据的顺序还是一样的,还                                 是先读1,再读2,依次3,4,5,6,7,8

                           c)读完各个数,CPU就知道是12345678了。

        这是小端存储和读取,是Intel的x86PC干的事情,前段时间联想收购了IBM的x86服务器业务,侧面可见IBM服务器的处理器还是intel公司的。




3 总结

从上面可见,

a)不论哪种CPU,不管数据怎么存储,两种CPu读取数据的时候仍然是按照从高位到低位读取的,比如1234,就先从千位1开始读,然后1,2,3,4

b)内存的高低地址,数字的高低位,这两个概念在CPU上也是相同的。

c)其实两种存储器变的只是数据存储的位置方式变了,因为数据位置变了,读取的位置变了,但是读取的数据顺序还是原来那个样子。 啰嗦的例子就是,同样是1234这个数字,PowerPC在内存上从低地址开始读,x86在内存上从高地址开始读,但是读的仍然是1,2,3,4,5,从低位到高位读到的数据。

     也就是读取数据,仍然是从低位到高位读数据,但是有从低地址到高地址,从高地址到低地址两种方式。


  

0 0
原创粉丝点击