LSB 和MSB是什么意思?

yusongleon 2008-08-29 09:44:13
比如:Return the 16 LSB of L_var1.
这是什么意思?
...全文
16930 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhejia 2011-08-05
  • 打赏
  • 举报
回复
不错,说的很好
cyzmef 2011-01-05
  • 打赏
  • 举报
回复
不错!谢谢!
xialuoye 2010-09-06
  • 打赏
  • 举报
回复 2
MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧。


     LSB(Least Significant Bit),意为最低有效位;MSB(Most Significant Bit),意为最高有效位,若MSB=1,则表示数据为负值,若MSB=0,则表示数据为正。
当选择模数转换器(ADC)时,最低有效位(LSB)这一参数的含义是什么?有位工程师告诉我某某生产商的某款12位转换器只有7个可用位。也就是说,所谓12位的转换器实际上只有7位。他的结论是根据器件的失调误差和增益误差参数得出的,这两个参数的最大值如下:   失调误差 =±3LSB,   增益误差 =±5LSB,   乍一看,觉得他似乎是对的。从上面列出的参数可知最差的技术参数是增益误差(±5 LSB)。进行简单的数学运算,12位减去5位分辨率等于7位,对吗?果真如此的话,ADC生产商为何还要推出这样的器件呢?增益误差参数似乎表明只要购买成本更低的8位转换器就可以了,但看起来这又有点不对劲了。正如您所判断的,上面的说法是错误的。   让我们重新来看一下LSB的定义。考虑一个12位串行转换器,它会输出由1或0组成的12位数串。通常,转换器首先送出的是最高有效位(MSB)(即LSB + 11)。有些转换器也会先送出LSB。在下面的讨论中,我们假设先送出的是MSB,然后依次送出MSB-1 (即 LSB + 10)和MSB -2(即LSB + 9)并依次类推。转换器最终送出MSB -11(即LSB)作为位串的末位。   LSB这一术语有着特定的含义,它表示的是数字流中的最后一位,也表示组成满量程输入范围的最小单位。对于12位转换器来说,LSB的值相当于模拟信号满量程输入范围除以212 或 4,096的商。如果用真实的数字来表示的话,对于满量程输入范围为4.096V的情况,一个12位转换器对应的LSB大小为1mV。但是,将LSB定义为4096个可能编码中的一个编码对于我们的理解是有好处的。   让我们回到开头的技术指标,并将其转换到满量程输入范围为4.096V的12位转换器中:   失调误差 = ±3LSB =±3mV,   增益误差 =±5LSB = ±5mV,   这些技术参数表明转换器转换过程引入的误差最大仅为8mV(或 8个编码)。这绝不是说误差发生在转换器输出位流的LSB、LSB-1、LSB-2、LSB-3、LSB-4、LSB-5、LSB-6和 LSB-7 八个位上,而是表示误差最大是一个LSB的八倍(或8mV)。准确地说,转换器的传递函数可能造成在4,096个编码中丢失最多8个编码。丢失的只可能是最低端或最高端的编码。例如,误差为+8LSB ((+3LSB失调误差) + (+5LSB增益误差)) 的一个12位转换器可能输出的编码范围为0 至 4,088。丢失的编码为4088至4095。相对于满量程这一误差很小仅为其0.2%。与此相对,一个误差为-3LSB((-3LSB失调误差)(-5LSB增益误差))的12位转换器输出的编码范围为3至4,095。此时增益误差会造成精度下降,但不会使编码丢失。丢失的编码为0、1和2。这两个例子给出的都是最坏情况。在实际的转换器中,失调误差和增益误差很少会如此接近最大值。   在实际应用中,由于ADC失调或增益参数的改进而使性能提升的程度微不足道,甚至可以忽略。但是,对于那些将精度作为一项设计目标的设计人员来说,这种 假设太过绝对。利用固件设计可以很容易地实现数字校准算法。但更重要的是,电路的前端放大/信号调理部分通常会产生比转换器本身更大的误差。   通过上面的讨论可以对本文开头提到的错误结论有一个更为全面而清晰的认识。事实上,上述的12位转换器的精度约为11.997位。采用微处理器或单片机可以利用简单的校准算法消除这种失调和增益误差,这对设计人员来说无疑是个好消息。   最最高有效位(MSB)   指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。
Entropy-Go 2010-03-20
  • 打赏
  • 举报
回复 1
[Quote=引用 4 楼 tianyongtao 的回复:]
是不是应该为:
LSB8(0x12345678) = 0x678
MSB8(0x12345678) = 0x123
[/Quote]

4楼的说错了吧,
LSB8(0x12345678) = 0x78
MSB8(0x12345678) = 0x12
yjg_dm 2009-10-10
  • 打赏
  • 举报
回复
let me see!
wwqlssPNU 2009-09-06
  • 打赏
  • 举报
回复
DING DING DING
tianyongtao 2009-05-15
  • 打赏
  • 举报
回复
是不是应该为:
LSB8(0x12345678) = 0x678
MSB8(0x12345678) = 0x123
Joey_cc 2008-09-01
  • 打赏
  • 举报
回复
纠正:
LSB8(0x12345678) = 0x78
MSB8(0x12345678) = 0x12
yusongleon 2008-08-29
  • 打赏
  • 举报
回复
超级感谢!分全部给你!
Joey_cc 2008-08-29
  • 打赏
  • 举报
回复
LSB: Least Significant Bit,就是一个数的最低位。16 LSB就是最低的16位。比如0x12345678, 0x5678是最低的16位,LSB16(0x12345678)= 0x5678,LSB8(0x12345678)=0x8
MSB: Most Significant Bit. 最高位,同理. MSB8(0x12345678)=0x1

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧