博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大小端, 字节序
阅读量:3560 次
发布时间:2019-05-20

本文共 1307 字,大约阅读时间需要 4 分钟。

计算机内存的存储方式分为大端模式和小端模式, 

例如intel x86芯片, 使用的是小端模式,

arm的芯片, 默认使用小端模式, 但可以配置大小端.

mips以前全用大端模式, 现在也可以大小端配置.


1. 如何查看本机 是大端还小端模式,

    lscpu, 可查看

 

2. 何谓大小端

   总是记不住, 所以再捋一遍看能记住不...

 

8位, 16位, 32位数据, 有个字节序

以16位为例,  MSB - [15][14][13]...[0] - LSB

MSB: Most Significant Bit  - 最高有效位

LSB: Least Significant Bit  - 最低有效位

如0x1234 - 左侧最高位,  右侧最低位....

MSB - 0001 0010 0011 0100 - LSB

 


字节序好理解, 这个是确定的

比如usb setup请求的bmRequestType这个字节

D7:     方向 (0 - OUT, 1 - IN)

D6..5: 类型 (0 - Standard, 1 - Class, 2 - Vendor, 3 - Reserved)

D4..0: Recipient/收件人 (0 - Device, 1 - Interface, 2 - Endpoint, 3 - Other, 4..31 - Reserved)

 

D0 即 LSB

D7 即 MSB

这个数据在内存中如何存储, 即有个大小端的概念

字节序从左到右 D7 .... D0, 

内存0 - 4G内存,

如果内存 地址的顺序 和 字节序一样,

即字节序高位的数据,  存放在内存低地址, 字节序低位的数据, 存放在内存高地址,  

这个叫做大端, 

即跟人类思维一样, 数据字节序和内存增长方向一致, 叫做大端... 

(有人发明了一个叫法,  高尾端, 即人类思维里的尾巴, 即字节序的LSB, 放在高位地址 --- 高尾端)

大端 == 高尾端...

 

反之, 字节序和内存增长方向相反, 即和人类思维反过来的, 

高位数据存放在高地址,  低位数据存放在低地址, 这种叫做小端...

(有人叫他低尾端, 即人类思维里的尾巴在低位地址)

 

ok, 我也用了很多记忆方法, 实际使用的时候还是会混...

尝试用以下想法再记录下:

 

* 大部分电脑, x86, arm都是使用小端模式

* 人类和电脑时不一样的...

* 人类看数字的方向一般都是先左后右, 中国人开车司机也是做左边驾驶位,

    上厕所...男左女友,  戴婚戒...男左女右, 

    打麻将...左边是上家, 右边是下家...(逆时针的...)

    左青龙,  右白虎,

    当然以前对联是先右后左, 横批是右边读起, 门神是右边秦叔宝, 左边尉迟恭...

    因为古代写字都是右边打头...

* 不管了, 反正按现代人, 大多数情况,  字节序是先左后右, 内存布局0-4G 我们也是先左后右一行一行理解的...

   如果数据按字节序顺序存放在内存中,  即和人类思想一致, 那就是大端!!

* 可是大多数电脑和人类不一致...所以x86, arm默认都是小端!!


就这样吧, 看这次多久会忘...


 

 

转载地址:http://hicrj.baihongyu.com/

你可能感兴趣的文章
es5中的arguments对象
查看>>
git本地仓库和远程仓库关联,分支重命名
查看>>
js对象的深拷贝,你真的觉得很简单吗?
查看>>
你真的了解map方法吗?手动实现数组map方法。
查看>>
带你手动实现call方法,让你收获满满
查看>>
前端知识体系
查看>>
查找入职员工时间排名倒数第三的员工所有信息
查看>>
使用join查询方式找出没有分类的电影id以及名称
查看>>
Qt教程(2) : Qt元对象系统
查看>>
驱动开发误用指针错误:Unable to handle kernel NULL pointer dereference at virtual address
查看>>
Linux部署DocSystem知识/文件管理系统
查看>>
Centos7开机自启动脚本无法使用备用方案
查看>>
jvm虚拟机内存详解
查看>>
线程的创建方式
查看>>
DNS是什么
查看>>
Hbase架构
查看>>
PaddleX的C++使用
查看>>
MyBatis-Plus代码生成器
查看>>
我的第一个SpringBoot项目(一)
查看>>
回文数
查看>>