当前位置:首页 > 科技  > 软件

你了解计算机中大端小端之分吗?

来源: 责编: 时间:2024-04-02 17:09:15 300观看
导读字节序大端字节序小端字节序判断当前设备大端or小端?尾语哈喽,大家好,我是呼噜噜,前段时间感冒了,好久没更新文章了,今天我们来聊聊计算机储存方式大端小端字节序之分在计算机中,无论上层是什么开发语言,到了最底层都是以二
  • 字节序
  • 大端字节序
  • 小端字节序
  • 判断当前设备大端or小端?
  • 尾语

Srl28资讯网——每日最新资讯28at.com

哈喽,大家好,我是呼噜噜,前段时间感冒了,好久没更新文章了,今天我们来聊聊计算机储存方式大端小端字节序之分Srl28资讯网——每日最新资讯28at.com

在计算机中,无论上层是什么开发语言,到了最底层都是以二进制的形式存储运算的;二进制,与我们更熟悉的十进制(由0-9这九个数字组成,逢十进一)不同的是,只有0和1两个数字,逢二进一Srl28资讯网——每日最新资讯28at.com

如今的主流计算机,是以以储存器为中心,存储器是用来存放数据和程序,下面是架构图:Srl28资讯网——每日最新资讯28at.com

图片图片Srl28资讯网——每日最新资讯28at.com

存储器 包含主存和辅存,其中主存是能直接与CPU交换信息,就是我们熟悉的内存。Srl28资讯网——每日最新资讯28at.com

字节序

计算机以二进制的形式将数据存到内存中,内存的基本单位是字节Byte, 内存以字节为单位来进行读写 。1Byte = 8bit(bit叫位,也叫比特,是用以描述计算机数据量的最小单位)。字节是内存8位为一组,每组比特都会被标记一个数字,这个数字也叫地址,寻址粒度也是字节Srl28资讯网——每日最新资讯28at.com

一个字节由于8位,如果它只考虑无符号数,它的表示范围0~255;如果考虑符号,并通过补码解决0值的问题,只能表示-128~127这个范围;那么如果超出这个范围,只能将多个字节连在一起来表示数值。比如C语言中char类型是1个字节的,int类型占用4个字节,double类型会占用8个字节等等Srl28资讯网——每日最新资讯28at.com

那么多个字节依次存到内存中,就会有顺序,这个叫字节序Endianness,也被称为端序,就是 大于一个字节类型的数据在内存中的存放顺序Srl28资讯网——每日最新资讯28at.com

字节序可以被分为两类:Big-Endian大端和Little-Endian小端(这也意味着单个字节没有大小端之分的),我们下文详细聊聊Srl28资讯网——每日最新资讯28at.com

大端字节序

大端字节序Big-Endian:数值的高位字节存放在内存的低地址端,低位字节存放在内存的高地址端Srl28资讯网——每日最新资讯28at.com

本文这里以32位的数0x12345678,来举个例子Srl28资讯网——每日最新资讯28at.com

图片图片Srl28资讯网——每日最新资讯28at.com

在现代计算机中,大多采用小端字节序,比如x86、DEC VAX、PDP-11等等 当然也有采用大端字节序的,比如:IBM、Sun、PowerPC等处理器 另外ARM系列处理器,大小端字节序都支持,可配置Srl28资讯网——每日最新资讯28at.com

判断当前设备大端or小端?

可以写个小代码来快速判断,我们这里以C/C++语言为例:Srl28资讯网——每日最新资讯28at.com

BOOL IsBigEndian(){    union NUM    {        int a;        char b;    }num;    num.a = 0x1234;    if( num.b == 0x12 )    {        return TRUE;    }    return FALSE;}

这里利用联合体union,所有成员共用同一块内存的特性,可以轻松地判断当前设备是否是大小端字节序Srl28资讯网——每日最新资讯28at.com

尾语

最后补充一个小故事,大端小端名词来源于Jonathan Swift书写的《格列佛游记》,书中描述了小人国,因为吃鸡蛋是从大头的一端剥开还是从小头的一端这个问题,导致教派之间的冲突,连年征战,死战不休Srl28资讯网——每日最新资讯28at.com

这是不是也暗示大端小端争论,并无较真的意义,怎么好用怎么来,通信交流做好转换的必要措施即可Srl28资讯网——每日最新资讯28at.com

到如今,从技术上来说,大小端的并无谁有明显的优势,更多的是计算机发展历史的影响。最初设计时,对字节序的选择往往是任意的,但后续技术的发展,需要背上兼容性的包裹。比如ARM明明大小端都支持,为啥大部分是小端,主要是移植x86程序方便;Srl28资讯网——每日最新资讯28at.com

还有RISC-V手册描述他们选择了小端序的原因:因为小端字节序,目前在商业上占主导地位(所有x86系统、iOS、Android和Windows for ARM)。想拓宽视野地可以去看看The RISC-V Instruction Set Manual Volume I: Base User-Level ISASrl28资讯网——每日最新资讯28at.com

当然也有商业竞争的原因,Intel的x86选择小端(可能是为了躲避专利纠纷),最终击败了IBM,导致如今主机领域小端是主流Srl28资讯网——每日最新资讯28at.com

参考资料:

《深入理解计算机系统》Srl28资讯网——每日最新资讯28at.com

https://inst.eecs.berkeley.edu/~cs250/fa11/handouts/riscv-spec.pdfSrl28资讯网——每日最新资讯28at.com

https://www.spiceworks.com/tech/tech-general/articles/big-endian-vs-little-endianSrl28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-80815-0.html你了解计算机中大端小端之分吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一文揭秘向量化编程的高性能魔法世界

下一篇: 探索类中的成员对象与封闭类

标签:
  • 热门焦点
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
Top