Most Significant Bit, Last(Least) Significant Bit
最高有效位(MSB)
指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十
进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。
MSB高位前
导,LSB低位前导。
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC
系列采用bigendian方式存储数据,而x86系列则采用littleendian方式存储数据。那么究竟什么是bigendian,什么又是
littleendian呢?
其实bigendian是指低地址存放最高有效字节(MSB),而
littleendian则是低地址存放最低有效字节(LSB)。
用文字说明可能比较抽象,下面用图像加以说明。比如数字
0x12345678在两种不同字节序CPU中的存储顺序如下所示:
BigEndian
低地
址高地址
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|12|34|56|78|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LittleEndian
低
地址高地址
----------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|78|56|34|12|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
从
上面两图可以看出,采用bigendian方式存储数据是符合我们人类的思维习惯的。而littleendian,!@#$%^&*,见鬼去
吧-_-|||
为什么要注意字节序的问题呢?你可能这么问。当然,如果你写的程序只在单机环境下面运行,并且不和别人的程序
打交道,那么你完全可以忽略字节序的存在。但是,如果你的程序要跟别人的程序产生交互呢?在这里我想说说两种语言。C/C++语言编写的程序里数据存储顺
序是跟编译平台所在的CPU相关的,而J***A编写的程序则唯一采用bigendian方式来存储数据。试想,如果你用C/C++语言在x86平台下
编写的程序跟别人的J***A程序互通时会产生什么结果?就拿上面的0x12345678来说,你的程序传递给别人的一个数据,将指向
0x12345678的指针传给了J***A程序,由于J***A采取bigendian方式存储数据,很自然的它会将你的数据翻译为
0x78563412。什么?竟然变成另外一个数字了?是的,就是这种后果。因此,在你的C程序传给J***A程序之前有必要进行字节序的转换工作。
无
独有偶,所有网络协议也都是采用bigendian的方式来传输数据的。所以有时我们也会把bigendian方式称之为网络字节序。当两台采用不同
字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。ANSIC中提供了下面四个转换字节序的宏。
·BE和
LE一文的补完
我在8月9号的《BigEndian和LittleEndian》一文中谈了字节序的问题,原文见上面的超级链接。可
是有朋友仍然会问,CPU存储一个字节的数据时其字节内的8个比特之间的顺序是否也有bigendian和littleendian之分?或者说是否
有比特序的不同?
实际上,这个比特序是同样存在的。下面以数字0xB4(10110100)用图加以说明。
BigEndian
msblsb
---------------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0|1|1|0|1|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
LittleEndian
lsbmsb
---------------------------------------------->
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|1|0|1|1|0|1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
实
际上,由于CPU存储数据操作的最小单位是一个字节,其内部的比特序是什么样对我们的程序来说是一个黑盒子。也就是说,你给我一个指向0xB4这个数的指
针,对于bigendian方式的CPU来说,它是从左往右依次读取这个数的8个比特;而对于littleendian方式的CPU来说,则正好相
反,是从右往左依次读取这个数的8个比特。而我们的程序通过这个指针访问后得到的数就是0xB4,字节内部的比特序对于程序来说是不可见的,其实这点对于
单机上的字节序来说也是一样的。
那可能有人又会问,如果是网络传输呢?会不会出问题?是不是也要通过什么函数转换一下比特
序?嗯,这个问题提得很好。假设littleendian方式的CPU要传给bigendian方式CPU一个字节的话,其本身在传输之前会在本地就
读出这个8比特的数,然后再按照网络字节序的顺序来传输这8个比特,这样的话到了接收端不会出现任何问题。而假如要传输一个32比特的数的话,由于这个数
在littelendian方存储时占了4个字节,而网络传输是以字节为单位进行的,littleendian方的CPU读出第一个字节后发送,实际
上这个字节是原数的LSB,到了接收方反倒成了MSB从而发生混乱。
分享到:
相关推荐
在计算机科学领域中,字节序是指存放多字节数据的字节(byte)的顺序,典型的情况是整数在内存中的存放方式和网络传输的传输顺序。Endianness有时候也可以用指位序(bit)。 一般而言,字节序指示了一个UCS-2字符的...
LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。
嵌入:1 顺序选取图像载体像素的最低有效位,排列起来作为秘密信息载体2 将秘密信息按位替换到载体中3 将载体重新写入图片.提取:1 顺序选取图像载体像素的最低有效位,排列起来作为秘密信息载体2 提取载体的前n位,...
解决VS(visual stdio)MSB3754,MSB375,MSB3755,MSB4036错误,引用程序集“System”无效等问题
信息隐藏实验报告一图像的位平面,LSB和MSB.计算机专业信息隐藏的实验 可能其中有些含有名字 需要自己去改 请下载后看看
LSB(Least Significant Bits) MSB(Most Significant Bits)图像的位平面,LSB和MSB
LSB 0 1 2 3 4 5 6 7 MSB | LSB 0 1 2 3 4 5 6 7 MSB LSB 0 1 2 3 4 5 6 7 MSB | LSB 0 1 2 3 4 5 6 7 MSB LSB 0 1 2 3 4 5 6 7 MSB | LSB 0 1 2 3 4 5 6 7 MSB LSB 0 1 2 3 4 5 6 7 MSB | LSB 0 1 2 3 4 5 6 7 MSB ...
11.2.0\client_1\RDBMS\mesg 缺失文件expus.msb、expzhs.msb、impus.msb、impzhs.msb,少了不能imp exp
MSB2512 PND Application Processor Preliminary Data Sheet Version 0.1
而我们平时处理的基本单位往往是字节,又由于CPU大小端的区别,经常看到MSB,LSB,msb,lsb这些词,让人感到混淆。统一的处理方式是搞清楚是先出高字节还是低字节,每个字节是先出bit7还是bit0,然后按bit流进行理解...
Oracle Client sqlldr和ulus.msb文件,Oracle Client端sqlldr工具必须用到的模块
在嵌入式开发中,很多情况会要分析协议,协议中有时候会出现二进制传输的浮点数,可以用分析工具查看浮点数对应的十六进制...6. 创新的一点,支持十六进制的MSB、LSB设置,可以兼容实际协议传输中MSB、LSB的不同配置。
1.版本:matlab2021a,我录制了仿真操作录像,可以跟着操作出仿真结果 2.领域:图像可逆数据隐藏加密算法...3.内容:基于多MSB预测和哈夫曼编码的图像可逆数据隐藏加密算法matlab仿真 4.适合人群:本,硕等教研学习使用
MSB2501的Datasheet,348页,很全的!
get the msb of a 32bits binary number
上海人民电气MSB样本pdf,
MSB9418型测控仪的产品性能说明书。
错误 2error MSB3758: 编译时出错。error CS0016: 未能写入输出文件“c:\Users\Merrya\AppData\Local\Temp\bvnoj1ko.dll”--“Could not execute CVTRES.EXE.” 错误3 :error MSB4036: 未找“SetEnvironment...
oracle11G32位客户端sqlldr文件,包含tnsus.msb,ulus.msb及使用方法,当使用sqlldr命令报这样的错误时说明缺少以上文件“Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not...
IC-Haus iC-MSB插补细分器(Interpolators)pdf,IC-Haus iC-MSB插补细分器(Interpolators)