[原创] 关于字节顺序--机器思维与人类思维之争

yaboona   2016-4-10 16:46 楼主
提起大小端字节顺序,就头疼,始终一本糊涂帐,今天,特地抽出一些时间,扒一扒,字节顺序到底是从哪来,为什么要分字节顺序?
首先,想想人类的思维方式习惯于怎么样?思考。。。先看见的先读呗,如:
1234 ---这个数是“一千两百三十四”
那么机器思维的方式是什么呢?---低位就存在低地址。如:
机器存储方式
读出来就是0x 0403 0201 -----简称“4321”吧
我们更换一种表现形式:
0000 0000: 0102 0304 ... ...
0000 0010: ... ...
我们习惯于怎么读呢? 0x0102 0304----简称“1234”吧? 我去,我去,我去。。。,不是4321吗??
这就是机器思维(小端模式)和人类思维(视在模式--又称大端模式)的不同!
网络传输是大小端模式的一个应用,它采用的是“人类思维方式”:也就是先看见的先传输。如“1234”,就是先发送1,再发2,再发3,再发4-----这很明显,这是人的思维方式。在网络底层,编程肯定是希望从低地址开始发送的---也就是采用机器思维,所以,两者结合,对于“1234”,在网络中的存储是这样的:
0000 0000: 0102 0304 ... ...
0000 0010: ... ...
也就是,高位在低字节-----大端方式----得出结论:网络字节顺序,是大端方式。
再次总结:
  • 如果是按照人类的思维方式去传输、读取、应用数据,那么数据存储方式就要是“视在模式”,也就是大端模式。
  • 大小端模式都是存储格式的概念,无所谓人性不人性;只有应用层面,才有“视在”,“人类思维”。我们说“大端存储模式”是“视在”模式的含义是:要想应用层是用人类思维方式去思考,那么,推导出,存储是要用大端模式的,所以称大端模式为“视在模式”。
本帖最后由 yaboona 于 2016-4-10 16:58 编辑

回复评论 (7)

规则还不是人制定的嘛......
点赞  2016-4-10 19:02
LS说的有道理
ic型号大全,ic交易网:http://icxh.hqew.com
点赞  2016-4-11 12:00
字节序以前理解成了比特序,后来才知道                                                                              
点赞  2016-4-11 21:58
大小端模式现在都有用吧,比如keil c51默认采用大端格式编译,但keil mdk默认是小端格式
千重雪  染蒹葭  谁  眉间砂  步步生莲花
点赞  2016-4-12 22:25
有道理!!!
点赞  2016-4-19 08:38
没那么夸张吧。

另外,字节序是有的,就是大小端。
比特序,这个,还真没印象,是数字IC上出来的么?
强者为尊,弱者,死无葬身之地
点赞  2016-6-9 00:41
引用: apleilx 发表于 2016-4-12 22:25
大小端模式现在都有用吧,比如keil c51默认采用大端格式编译,但keil mdk默认是小端格式

具体是看机器的特性,像arm,是可以设置的,只是默认下,印象里是小端格式。
强者为尊,弱者,死无葬身之地
点赞  2016-6-9 00:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复