大端模式和小端模式(大端模式和小端模式)

2023-11-21 18:18:56 | 新橄榄网

最近经常有小伙伴私信询问大端模式和小端模式(大端模式和小端模式)相关的问题,今天,新橄榄网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

大端模式和小端模式(大端模式和小端模式)

大端模式和小端模式

大端模式(Big-Endian)又称大端字节序,由于在网络传输中一般使用的是大端模式,所以也叫网络字节序。

在大端模式中,将高位字节放在低位地址,低位字节放在高位地址。

举个例子,数值 0x12345678 ,其中 0x12 这一端是高位字节, 0x78 这一端是低位字节。

该数值的存储顺序是这样的:

大端模式符合我们阅读和书写的方式,都是从左到右的。比如 12345678 ,我们只需要按照从左到右的顺序进行阅读和书写就是大端模式的存储顺序了。

小端模式(Little-Endian)又称小端字节序,由于大多数计算机内部处理使用的是小端模式,所以也叫主机序。

在小端模式中,将高位字节放在高位地址,低位字节放在低位地址。

小端模式比较符合我们人类的思维模式,大的放大的那一边,小的放小的那一边。但是在计算机中存储的顺序与我们看到的顺序是相反的。

对于早期的计算机来说,先处理低位字节效率比较高,因为计算都是从低位开始的,所以大多数计算机内部处理使用的是小端模式。但是计算机发展到现在,计算机的处理器相较于以前已经进步很多了,先处理高位还是低位字节的影响已经可以忽略,但是为了向后兼容,保留了大/小端模式。

大小端模式各有优势:小端模式强制转换类型时不需要调整字节内容,直接截取低字节即可;大端模式由于符号位为第一个字节,很方便判断正负。

大端模式更适合程序员阅读,因为看到的内容与输出的内容是一致的。

计算机在处理数据的时候,只会按照顺序去读取字节,不关心数据是大端模式还是小端模式。

程序在读取到数据后,需要判断计算机的大小端模式,来决定是否需要进行大小端转换。

如果读到的第一个字节是高位字节,那么就是大端模式;反之,如果读到的第一个字节是低位字节,那么就是小端模式。

大端模式和小端模式(大端模式和小端模式)

大端模式和小端模式

具体如下:

1、大端模式:

大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式类似于把数据当作字符串顺序处理。 新橄榄网

地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

在大端模式下,前16位应该这样读: e6 84 6c 4e ( 假设int占4个字节)。

记忆方法: 地址的增长顺序与值的增长顺序相反。

2、小端模式例子:

0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。

0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。

在小端模式下,前16位应该这样读: 4e 6c 84 e6( 假设int占4个字节)。

记忆方法: 地址的增长顺序与值的增长顺序相同。

大小端模式:

为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器。

例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。

对于 大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

大端模式和小端模式(大端模式和小端模式)

golang之大端序、小端序

当分别处于 大小端模式 下的内容存放如下
(1)大端模式存储(存储地址为16位)
地址 数据
0x0004(高地址) 0x44
0x0003 0x33
0x0002 0x22
0x0001(低地址) 0x11

(2)小端模式存储(存储地址为16位)
地址 数据
0x0004(高地址) 0x11
0x0003 0x22
0x0002 0x33
0x0001(低地址) 0x44

在前面也简单阐述了大小端序的定义并结合简单实例来说明,接下来会给出详细实例来说明:
1、大端序(Big-Endian):或称大尾序
一个类型: int32 的数 0X0A0B0C0D的内存存放情况

数据是以8bits为单位

2、小端序(little-endian):或称小尾序

比如0x00000001
大端序:内存低比特位 00000000 00000000 00000000 00000001 内存高比特位
小端序:内存低比特位 10000000 00000000 00000000 00000000 内存高比特位

其实在前面罗列出那么东西,最终是为了接下来讲述的在golang中涉及到网络传输、文件存储时的选择。一般来说网络传输的字节序,可能是大端序或者小端序,取决于软件开始时通讯双方的协议规定。TCP/IP协议RFC1700规定使用“大端”字节序为网络字节序,开发的时候需要遵守这一规则。默认golang是使用大端序。详情见golang中包encoding/binary已提供了大、小端序的使用

输出结果:
16909060 use big endian:
int32 to bytes: [1 2 3 4] ### [0001 0002 0003 0004]
bytes to int32: 16909060

16909060 use little endian:
int32 to bytes: [4 3 2 1] ### [0004 0003 0002 0001]
bytes to int32: 16909060

在RPCX框架中关于RPC调用过程涉及的传递消息进行编码的,采用的就是大端序模式

以上就是新橄榄网小编整理的内容,想要了解更多相关资讯内容敬请关注新橄榄网。
与“大端模式和小端模式(大端模式和小端模式)”相关推荐
电商APP有多少种开发模式(电商有几种模式)
电商APP有多少种开发模式(电商有几种模式)

电商APP有多少种开发模式(电商有几种模式)新零售系统有定制开发、模板、SAAS三种不同开发模式定制开发:定义:顾名思义,就是完全按照你的需求给你定制。特点是可以给到源代码,独立部署服务器,客户方可以要求拥有源代码的知识产权,可以掌控服务器和数据安全。优势:可以按照客户方需求进行满足,可以拿到源代码,可以二次开发,有知识产权,可以掌控服务器和数据安全。缺点:开发周期

2023-11-09 15:18:22
怎么退出开发者模式
怎么退出开发者模式

怎么退出开发者模式若是vivo手机指的退出开发者模式方法如下:一、从状态栏左侧下滑呼出通知栏,点击“正处于开发模式”的通知即可关闭开发者选项;二、进入设置--系统管理/更多设置--开发者选项--关闭“开发者选项”;三、还原所有设置,可进入设置--系统管理/更多设置--备份与重置/恢复出厂设置--还原所有设置--还原,恢复设置选项。此操作不会删除文件或软件,会取消密码

2023-10-24 08:29:43
开发者模式如何打开?
开发者模式如何打开?

开发者模式如何打开?打开苹果手机的开发者模式的操作流程如下:工具/原料:iphone12、ios15。1、苹果手机点击设置找到隐私与安全性并点击进入。2、然后滑动到界面最下方,找到开发者模式并点击进入。3、接着打开开发者模式后面的按钮。4、然后点击确认重新启动。5、待iPhone重启启动后,iPhone主界面将会出现打开开发者模式的提示框,确认打开后

2023-12-03 15:22:45
88潮牌是怎么运作模式
88潮牌是怎么运作模式

88潮牌是怎么运作模式1、首先88潮牌会利用网络平台进行宣传,通过微信、陌陌、探探、百度等APP进行品牌宣传。2、其次88潮牌利用OAO模式,线上找顾客,线下成交,邀请网红在店内直播的运作模式。3、最后增加店铺的知名度以及在群众中的影响力,以老会员带动新会员。如何运营和推广自己代理的潮牌童装?现在淘宝非常不好做,因为前期投入也大,就算用淘宝直通车,效果也不会很明显。现在玩微博

2023-10-24 08:33:10
小米如何进入开发者模式
小米如何进入开发者模式

小米如何进入开发者模式如下:工具/原料:小米11、安卓12.0、本地设定2.01、步骤一、打开手机设置,点击进入【我的设备】。2、步骤二、进入后上滑,看见【全部参数】的按钮,点击打开。3、步骤三、进入后上滑,连续点击【MIUI版本】,直到看到【您现在处于开发者模式】就打开成功了。4、步骤四、进入开发者模式设置,只需要重新打开【设置】,上滑,点击【更多设置】

2023-10-28 04:05:49
怎么关闭微信开发者模式?
怎么关闭微信开发者模式?

怎么关闭微信开发者模式?方法一:1、在微信公众平台上登录帐号;2、在左边功能区选择【开发者中心】;3、在【配置项】里可以看到公众号绑定的第三方;4、点击【授权管理】可以对它取消授权。方法二:1、左边功能区里选择【添加功能插件】;2、插件库旁边的【授权管理】进行授权或者取消授权微信小程序怎么关微信下拉小程序可以通过上划关闭或点击返回关闭。1、上

2023-10-22 20:11:47
用java如何实现CS模式系统
用java如何实现CS模式系统

用java如何实现CS模式系统java有自带的跨平台的图型界面类,就是swing。通过swing的图型界面的设计,可以实现cs系统的。然后使用MVC的软件设计思想来实现界面、业务处理、数据持久等编程方式,就可以实现CS模式的系统编程。如果你已经很熟悉javaee的开发模式,那么你只需要对图型界面这块深入了解一下即可,另外有很多图型界面的框架可以使用,提高开发效率。java基础学习

2023-11-05 01:29:57
微信开发者模式在哪里打开
微信开发者模式在哪里打开

微信开发者模式在哪里打开从你的描述来看,微信想打开开发者模式,建议你登录微信公众平台,点击功能,选中“高级功能”。进入高级功能页面后,点击“开发模式”右下角的“进入,进入页面后,点击右边的“开启”,开发模式就开启成功了。微信公众号怎么开通开发者模式?1、首先登陆你的账号,在功能里面选择高级功能。2、然后再编辑模式和开发者模式里面选择关闭编辑模式,打开开发者模式。3

2023-10-28 04:06:27