大端和小端是计算机写内存的习惯。就如人类写文章时的顺序一般,现代人从左往右,古人却是竖书成行(自上而下写满一行后,再自右向左换行。);有些计算机规定从左往右写内存,有些规定从右往左写内存。 大端就是大地址在前,小端就是小地址在前。
前言:大端小端的历史发展Little-Endian和Big-Endian这两个词最早来自格列夫游记用来讽刺政党之间的观点,一个坚持从小的那一端打破鸡蛋,另一个则坚持从大的那一端打破鸡蛋,我们都知道对于做饭而言,这两个没什么区别。
计算机Intel8088使用小端方式(相较于大端而言)是因为其能够完成在第一个内存周期执行操作,后来计算机数据总线宽度与寄存器宽度一致了,也就没有这个优势了。从操作者而言,小端模式利于计算,而大端模式则更易理解。对于具体的某一位bitPos,其含权大小bitValue是如何被计算的?[1]
- 小端 b i t V a l u e = 2 b i t P o s + 8 × b y t e P o s bitValue=2^{bitPos+8\times{bytePos}} bitValue=2bitPos+8×bytePos
对于大端模式你还得知道总的字节数量wordSize
- 大端 b i t V a l u e = 2 b i t P o s + 8 × w o r d S i z e − b y t e P o s − 1 bitValue=2^{bitPos+8\times{wordSize-bytePos-1}} bitValue=2bitPos+8×wordSize−bytePos−1
大端模式,第一个字节第一个数字就是符号位,小端需要找到最后一个字节的第一个数字。简单来说,权重计算小端优于大端,因为他不需要提前知道总的字节大小。
不同的计算机架构可能采用不同的字节序,这取决于CPU的设计和实现。一般来说,大端序的架构有:
- IBM System/370及其后续机型
- Motorola 68000系列
- PowerPC
- Java虚拟机
小端序的架构有:
- Intel x86及其兼容处理器
- ARM(默认小端序,但可以切换为大端序)
- Intel 8051
- Zilog Z80
还有一些架构可以支持双端序,也就是可以在运行时选择使用大端序或小端序,例如:
- MIPS
- ARM(可选大端序)
- DEC Alpha
- IA-64
我们知道计算机是以字节为单位存储数据的,一个十进制数需要多少存储单元取决于其数的大小。
char arr[] = { 0x12,0x34 };
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?