首页 > 其他分享 >MSB和LSB

MSB和LSB

时间:2022-12-05 11:22:43浏览次数:35  
标签:LSB 字节 比特 MSB endian CPU

经常搞忘LSB和MSB,转载记录一下

1、LSB(Least Significant Bit)--最低有效位

LSB代表二进制中最小的单位,可以用来指示数字很小的变化。也就是说,LSB是一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用来检测数的奇偶性。

2、MSB(Most Significant Bit)--最高有效位

MSB代表一个n位二进制数字中的n-1位,具有最高的权值2^(n-1).对于有符号的二进制数,负数采用反码或补码形式,此时MSB用来表示符号,msb为1表示负数,0表示正数。


注意:以上两个概念中“二进制”是关键字眼。另外最高有效位与最低有效位可以用“对整个数值影响最大的位和最小的位来区分最高有效位和最低有效位”,好比十进制数字10001,第一个“1”带表万位的单位数值,第二个“1”代表个位的单位数值,

显然第一个“1”对整个十进制数的整体数值影响最大,所以类似于最高有效位;

同理,第二个“1”对整个十进制数的整体数值影响最小,所以类似于最低有效位。

LSB与MSB举例

假设一个一字节的数0x9A转换成2进制为“1001 1010”,那么LSB与MSB则应该是这样分布的:

 

 

 

 

 

 

通常,一个芯片的管脚中,对于一个多比特的信号,比如32根的地址线,从低开始按0到31编个号。MSB就是31,LSB就是0。那么如果标记为:ADDR[31:0]就是MSB first的方式,如果标记为ADDR[0:31]就是LSB first的方式。LSB和MSB是以机器码为单位进行排序。

那么CPU存储一个字节的数据时,其字节内的8个比特之间的顺序是否也有big endian和little endian之分?或者说是否有比特序的不同?

实际上,这个比特序是同样存在的。

MSB LSB:起始地址为最高位, 最后地址为最低位。(大端)

LSB MSB:起始地址为最低位,最后地址为最高位。(小端)

下面以数字0xB4(10110100)用图加以说明。

低地址----------------------------------------------》高地址

 

 

 

低地址----------------------------------------------》高地址

实际上,由于CPU存储数据操作的最小单位是一个字节,其内部的比特序是什么样对我们的程序来说是一个黑盒子。也就是说,你给我一个指向0xB4这个数的指针,对于big endian方式的CPU来说,它是从左往右依次读取这个数的8个比特; 而对于little endian方式的CPU来说,则正好相反,是从右往左依次读取这个数的8个比特。而我们的程序通过这个指针访问后得到的数就是0xB4,字节内部的比特序对于程序来说是不可见的,其实这点对于单机上的字节序来说也是一样的。

如果是网络传输呢?会不会出问题?是不是也要通过什么函数转换一下比特序?嗯,这个问题提得很好。假设little endian方式的CPU要传给big endian方式CPU一个字节的话,其本身在传输之前会在本地就读出这个8比特的数,然后再按照网络字节序的顺序来传输这8个比特,这样的话到了接收端不会出现任何问题。而假如要传输一个32比特的数的话,由于这个数在littel endian方存储时占了4个字节,而网络传输是以字节为单位进行的,little endian方的CPU读出第一个字节后发送,实际上这个字节是原数的LSB,到了接收方反倒成了MSB从而发生混乱。
————————————————

原文链接:https://blog.csdn.net/lx123010/article/details/103657114

标签:LSB,字节,比特,MSB,endian,CPU
From: https://www.cnblogs.com/bushLing/p/16951807.html

相关文章

  • bash: lsb_release: command not found
     yuminstall-yredhat-lsb#lsb_release-rRelease:7.9.2009#lsb_release-aLSBVersion::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-no......
  • OpenCV实现LSB算法(数字水印)
    本文参考自《计算机视觉40例从入门到深度学习(OpenCV-Python)》LSB算法的原理就不在过多的介绍了,直接上代码。lenacolor.pngwatermark.bmp#LSB算法importnumpyasn......
  • 关于VS2022 报错:MSB3027 无法将"xxx.dll"复制到"xxx"超出了重试计数 10 问题分析与解
    从标题我们不难看出,这个问题实际就是系统不能够将这个dll文件那过来放到其他目录去。其实我不知道大家是一个什么思路哈,我一开始就是无脑的去网上查找解决方案,但是在网上......
  • Msb网络安全-CSS
    一、CSS基础概念CSS有两个重要的概念,分别是样式和布局CSS的样式分为两种:一种是文字的样式,一种是盒模型的样式CSS的辅助页面布局:完成HTML不能完成的功能,比如并排显示,比如......
  • C# vs2019 MSB3644 找不到 .NETFramework,Version=v4.6.2 的引用程序集
    一、前言 从github上clone了Dapper的项目,想来学习学习,F6生成的时候,提示MSB3644找不到.NETFramework,Version=v4.6.2的引用程序集的错误二、解决方案1.百度......找......
  • VS2017 报错: MSB6006,CL.exe 已退出
    说明win8.1+vs2017精简版运行程序时报上述错误。在安装目录中运行cl.exe可以发现报错缺少各种文件。所以应该是dll环境问题。解决方法修复dll环境。我的是在360软件......
  • Linux查询块设备命令之 lsblk
    简介在Linux系统下面,lsblk用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util......
  • 树形查看磁盘目录 lsblk
     lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:00100G0disk├─sda18:10500M0part└─sda2......
  • MSBuild Community Tasks Project
    MSBuild是Microsoft和VisualStudio的新生成平台。​​MSBuild概念​​​ 解释属性、任务、目标和其他MSBuild组件背后的概念。​​​用于排除MSBuild错......
  • TypeScript 之父简介:TS Anders Hejlsberg: Introducing TypeScript
    AndersHejlsberg:IntroducingTypeScript​​https://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript​​image.pngimage.png......