网络学习[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,从低位到高位读到的数据。
也就是读取数据,仍然是从低位到高位读数据,但是有从低地址到高地址,从高地址到低地址两种方式。
- 网络学习[1]--字节序(大小端)理解
- 大小端 网络字节序
- 网络字节序,大小端
- 字节序网络序大小端问题
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 关于网络字节序--大小端分析
- 大小端、网络字节序问题
- 大小端、网络字节序问题
- 大小端模式与网络字节序
- 大小端模式和网络字节序
- 大小端及网络字节序
- 大小端问题网络字节序
- 大小端网络字节序图解
- 转自智慧石--NAFSM滤波
- Trie树简介_其中的代码不够好还可以优化
- NYOJ 625 笨蛋的难题(二)
- UVALive 6533
- StringBuffer类的总结
- 网络学习[1]--字节序(大小端)理解
- java静态分派和动态分派
- bulk collect批量定期插入删除行(续)
- OpenCv学习笔记(一)——数字图形的基础和结构
- 电器保护线路的机理
- 函数指针
- 初识数据库之红皮书——实例小结
- read命令
- Java高级视频_IO输入与输出(三)