Big-endian和little-endian

判断CPU是大端还是小端 一、如何判断CPU是大端还是小端?明白大端和小端的区别,实现起来就非常简单:#include int main(){ union ut{   short s;   char c[2];  }u; if(sizeof(short) == 2) {  u.s = 0x0102;  if(u.c[0] == 1 && u.c[1] == 2)  {   printf("big enida 阅读详情
Big-endian和little-endian是描述排列存储在计算机内存里的字节序列的术语。

Big-endian是一种大值的一端(序列中更典型值)存在前面(在最小的存储地址)的顺序。Little-endian是一种小值的一端(序列中较不典型的值)存储在前的顺序。比如,在Big-endian的电脑中,需要两个字节把十六位数4F52当作4F52存在存储器中(如果4F存在存储地址1000中,比如说,52将存在1001中)。在little-endian系统里,将被存为524F(52存在存储地址1000中,比如说,4F将存在1001中)。

IBM的370主机,多数基于RISC计算机,和Motorola的微处理器使用big-endian方法。TCP/IP也使用big-endian方法(因此big-endian方法也叫做网络编码)。对于人来说我们的语言都是从左到右的习惯方式。这看上去似乎被认为是自然的存储字符和数字方式-你同样也希望以同样的方式出现在你面前。我们总的许多人因此也会认为big-endian是流行的存储方式,正如我们平时所读到的。另一个方面说,Intel处理器(CPUs)和DEC Alphas和至少一些在他们的平台的其他程序都是little-endian的。

有个关于little-endian的争议是如果你增加数字的值,你可能在左边增加数字(高位非指数函数需要更多的数字)。因此,经常需要增加两位数字并移动存储器里所有Big-endian顺序的数字,把所有数向右移。使用little-endian的存储器中不重要的字节可以存在它原来的位置,新的数可以存在它的右边的高位地址里。这就意味着有些计算机的运作可以变得简单和快速。

语言编译器比如说Java或FORTRAN必须明确他们开发的目标代码使用的是什么存储方式。有必要的话可以使用转换器可以用来转换存储顺序。

注意在使用big-endian和little-endian字节顺序中,一个位里面都是使用big-endian。也就是说,在存储的字节里一个位串代表的给定数没有big-endian和little-endian之分。比如说,有个十六位数4F放在一个给定的字节地质前面或者后面,在这个字节的这一位的里的顺序是:

 01001111

从这一位的顺序来看有可能是big-endian也可能是little-endian,但是CPUs和程序几乎都是设计成big-endian位序的。尽管如此在数据的交换中它有可能其中的一种顺序。 

Eric Raymond评述说Internet域名地址和e-mail地址是little-endian的。比如我们的网址用big-endian来表述是com.whatis.www。

Big-endian和little-endian来自于Jonathan Swift的Gulliver's Travels ,Big-endian是那个大鸡蛋是打破大头的那个政治派别,而反对派Lilliputian King要求他的国民打鸡蛋的时候用小的那一头。 

目前的存储器,多以byte为访问的最小单元,当一个逻辑上的整理必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是endian的问题应运而生了。对于不同的存储方法,就有Big-endian和Little-endian两个描述。(这两个术语来自于 Jonathan Swift 的《《格利佛游记》其中交战的两个派别无法就应该从哪一端--小端还是大端--打开一个半熟的鸡蛋达成一致。在那个时代,Swift是在讽刺英国和法国之间的持续冲突,Danny Cohen,一位网络协议的早期开创者,第一次使用这两个术语来指代字节顺序,后来这个术语被广泛接纳了。) 

存在“如果说"跟word或者说字长根本就没关系",假设有一数据文件里面有N多数顺序排布,如果想以Little-Endian format 读入内存某区域,那么应该怎么读?怎么排?”这样的问题是由于对于endian的实质理解的偏差,endian指的是当物理上的最小单元比逻辑上的最小单元小时,逻辑到物理的单元排布关系。这里的“有一数据文件里面有N多数顺序排布”,这个“有一数据”显然不是逻辑上的最小单元,而其中的“N多数”的一个才是逻辑最小单元,于是可应用楼主表格中的原则排列,而“N多数”之间的顺序则是由这“N多数”的宿主决定的,比如是你写的程序,这个顺序由你决定。

刚才谈到了,endian指的是当物理上的最小单元比逻辑上的最小单元小时,逻辑到物理的单元排布关系。咱们接触到的物理单元最小都是byte,在通信领域中,这里往往是bit,不过原理也是类似的。 

实践可以给你更多的经验,比如在一个嵌入式系统的通信协议中,从底层射频驱动到上层的协议栈全部需要实现,那么很可能遇到多个endian的问题,底层的bit序、协议层的byte序、应用层的byte序,这些都是不同的概念。

Big-Endian 和 Little-Endian 字节排序 
  字节排序                  含义 
Big-Endian    一个Word中的高位的Byte放在内存中这个Word区域的低地址处。 
Little-Endian  一个Word中的低位的Byte放在内存中这个Word区域的低地址处。 
必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)按Big-Endian或者Little-Endian的不同操作来处理字节。 

一个例子: 

如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为 
           big-endian   little-endian 
0x0000      0x12        0xcd 
0x0001      0x34        0xab 
0x0002      0xab        0x34 
0x0003      0xcd        0x12 

除了moto的68K系列和dec的sparc是big endian外,常见的cpu都是little endian。ARM同时支持 big和little,实际应用中通常使用little endian。
判断大小端字节序的两种方法(联合与指针) 1.什么是大小端字节序 在我们的电脑中,系统在会将多个字节的数据存储在一片连续的地址上,而将数据的各个字节从这片空间的高地址位开始存储还是从低地址位开始存储就决定了系统的存储字节序 1.1 小端字节序 在32位的操作系统中,int 类型的变量占4个字节,我们利用这样一个变量来说明什么是大端字节序什么是小端字节序; 定义一个变量并赋于初值 ... 阅读详情

相关推荐

C/C++ 大小端字节序的判断和转换

大小端原理示意图 int x = 0x01; 地址增长方向 -----> 小端序,低位位于低字节处 +----+----+----+----+ |0x01|0x00|0x00|0x00| +----+----+----+----+ A | &x 大端序,高位处于低字节处 +----+----+----+----+ |0x00|0x00|0x00|0x01| +----+----

m0_47696151的博客 3618

Universal Serial Bus

USB (Universal Serial Bus) is a specification[1] to establish communication between devices and a host controller (usually personal computers), developed and invented by Ajay Bhatt working in Intel.[2

andypk的专栏 2万+

URL编解码、Big Endian和Little Endian

Big Endian和Little Endian

zhaohong_bo的专栏 533

signature=07d3e2275808e4f2b67e8d3d2aca6858,8-K

0001193125-20-040654.txt : 202002180001193125-20-040654.hdr.sgml : 2020021820200218171710ACCESSION NUMBER:0001193125-20-040654CONFORMED SUBMISSION TYPE:8-KPUBLIC DOCUMENT COUNT:16CONFORMED PERIOD OF R...

weixin_26900991的博客 9万+

Big-Endian 和 Little-Endian 字节排序

  Big-Endian 和 Little-Endian 字节排序字节排序含义Big-Endian一个Word中的高位的Byte放在内存中这个Word区域的低地址处。Little-Endian一个Word中的低位的Byte放在内存中这个Word区域的低地址处。必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超

bisword的专栏 2235

big-endian和little-endian的判断和引申

  经常在C/C++笔试题中见到这样的程序题:编写一个函数来判断处理器是big-endian(大端)还是little-endian(小端)的,如果是大段则返回0,小断则返回1。  那么究竟什么是big-endian和little-endian呢?这是只内存中跨越多个字节的数据的存放顺序,或者说是cpu对操作数的存放顺序,简而言之:Big endian machine: It thinks the first byte it reads is the biggest.Little endian machine

Pk_zsq的专栏 1543

Big Endian 和 Little Endian 详解

一、Endian的起源 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。 1980年,Danny Cohen在其著名的论文”On Holy Wars and a Plea for Peace...

心中的执念的博客 9万+

晶振(晶体振荡器)测试方法详解

晶振测试方法分为无源和有源两种类型。无源晶振(两脚)需用示波器测试波形,重点关注正弦波形状、200mV-1.5Vpp幅值和频率精度;有源晶振(四脚)通电后直接输出方波。测试要点包括:示波器使用10X探头、AC耦合,带宽需5倍于晶振频率;万用表可初筛短路/开路;替换法是工程最有效方法。常见故障排查顺序:供电→复位→焊接→型号→负载电容→波形观察→更换晶振→MCU配置。负载电容需按公式计算匹配,示波器观察是核心测试手段。

jiujiujinyuxi的博客 926

关于little endian和big endian的问题

关于little endian和big endian的问题 导入:是因为一个小 demo中,录音一段内容传到后台播放都是嘈杂音,所引发的问题和学习 笼统的解释是:CPU处理器存储数据的字节顺序,分为little endian 和 big endian 以下来详细的学习: - 首先来学习一下: 1、高/低地址端: 栈底 栈 栈顶 高地址端 低地址端...

SDSXCY的博客 400

Qt界面编程(三)—— 父子关系、对象树、信号和槽(自定义信号和槽、Qt5与Qt4的写法)

Qt框架默认提供的标准信号和槽不足以完成我们日常应用开发的需求,比如说点击某个按钮让另一个按钮的文字改变,这时候标准信号和槽就没有提供这样的函数。但是Qt信号和槽机制提供了允许我们自己设计自己的信号和槽。声明在类的signals域下没有返回值,void类型的函数只有函数声明,没有定义可以有参数,可以重载通过emit关键字来触发信号,形式:emit object->sig(参数);

此心光明事上练的博客 1695

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1037

关于Big Endian和Little Endian

由来:big-endian和little-endian这两个术语来自Jonathan Swift在十八世纪的嘲讽作品Gulliver’s Travels。 Blefuscu帝国的国民被根据吃鸡蛋的方式划分为两个部分:一部分在吃鸡蛋的时候从鸡蛋的大端(big end)开始,而另一部分则从鸡蛋的小端(little end)开始。x86的CPU使用的是LE(Windows中称为“主机字节序”),

afxid的专栏 2121

从MATLAB到版图:手把手复现一篇16位1MSPS SAR ADC的完整设计流程(含Cadence与Verilog代码)

本文详细介绍了16位1MSPS SAR ADC的完整设计流程,从MATLAB行为级建模到Cadence电路实现,再到Verilog数字逻辑编码和版图生成。重点讲解了高精度逐次逼近型模数转换器的关键技术,包括电容阵列建模、校准算法实现、FFT性能验证以及混合信号仿真等,为工程师提供了实用的工业级设计指南。

weixin_28703507的博客 301

大小端字节序(Big Endian和Little Endian)

那么何为字节序(Endia)呢? Big Endian是指低地址存放最高有效字节(MSB),而Little Endian则是低地址存放最低有效字节(LSB)。 大端模式 所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b

熊浪的博客 6958

STM32驱动四位共阳极数码管实现高精度秒表计时器

本文详细介绍了如何使用STM32驱动四位共阳极数码管实现高精度秒表计时器。项目基于STM32F103C8T6最小系统板,通过定时器中断和GPIO控制,实现0.1秒精度的计时功能,并解析了共阳极数码管的动态扫描原理及按键消抖等关键技术。

n8m7b6v5c4的博客 951

Pikachu靶场环境搭建(Windows环境下安装详细教程)

Pikachu靶场是一个漏洞测试练习平台。其中包含了常见的web安全漏洞,如果你是一个渗透测试学习者没有靶场的练手,那么pikachu是一个很好的测试平台。

weixin_42857656的博客 1823

big-endian和little-endian

 big-endian和little-endian这两个术语来自Jonathan Swift在十八世纪的嘲讽作品Gulliver’s Travels(《格列佛游记》。)。 Blefuscu帝国的国民被根据吃鸡蛋的方式划分为两个部分:一部分在吃鸡蛋的时候从鸡蛋的大端(big end)开始,而另一部分则从鸡蛋的小端(little end)开始。由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢

yingpansjhf的专栏 1万+

Ubuntu22.04安装搜狗输入法踩坑实录:从依赖报错到完美解决的完整指南

本文详细解析了在Ubuntu 22.04系统上安装搜狗拼音输入法的完整流程,从解决依赖报错到配置fcitx框架,再到最终优化使用体验。针对常见的dpkg安装错误和fcitx冲突问题,提供了实用的解决方案和命令,帮助用户顺利完成安装并享受流畅的中文输入体验。

palm99的专栏 974

little endian和big endian

简而言之:Big endian machine: It thinks the first byte it reads is the biggest.Little endian machine: It thinks the first byte it reads is the littlest.举个例子,从内存地址0x0000开始有以下数据 0x0000     0x12 0x0001     0x

heezhen的专栏 940

302.QoS实现工具之MQC

QoS 技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法 - 模块化 QoS 命令行 MQC(Modular QoS Command-Line)。下面就来介绍一下 MQC。

迷逝 1393

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Big Endian 和 Little Endian 模式的区别

谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian呢? 其实big endian是指低地址存放最高有效字节(MSB),而little ...

程序猿老樊的博客 5713

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Little-endian 和 big-endian 的区别

Little-endian 和 big-endian 是两种不同的字节序(byte order)格式,用于存储多字节数据(如整数)在计算机内存中的表示方式。字节序描述了数据的字节排列顺序。

u013490997的博客 759

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Big-Endian和little-Endian

song add: 网络直接绪是和Big-Endian是一个顺序,也就是说首先传递的是高字节,我们接收到的也是高字节,Big-Edian我们的计算机在取值的时候从从底地址区的,首先取到的也是高字节。 big-Endian和Little-Endian之间的转换可以用,htons,htonl,ntohs ntohl,x86是Little-Endian,所以说是h是host htons:host

SongCdut的专栏 866

Big-endian和little-endian(转载)

Big-endian和little-endian关键字:Big-endian little-endian Big-endian和little-endian是描述排列存储在计算机内存里的字节序列的术语。Big-endian是一种大值的一端(序列中更典型值)存在前面(在最小的存储地址)的顺序。Little-endian是一种小值的一端(序列中较不典型的值)存储在前的顺序。比如,在Big

dreamXren的专栏 2661
上一篇: VMwareTools实现WINDOWS和LINUX共享文件夹
下一篇: 嵌入式人才的发展方向
KerNEL.AC.CN
博客等级 码龄15年 100粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值