Embedded 理解寄存器中的位移位

Embedded 理解寄存器中的位移位,embedded,Embedded,我必须使用这些数据更新32位寄存器 其中包括位移位,我对两件事感到困惑: 哪个是LSB,哪个是MSB 这个操作符是什么 给出以下表达式: 3 << 0 | 7 << 3 | 1 << 6 | 0 << 7 | 1 << 7 | 0 << 8 | 0 << 10 | 0 << 11 | 0 << 12 | 0 << 13 | 0 << 14 或

我必须使用这些数据更新32位寄存器 其中包括位移位,我对两件事感到困惑:

  • 哪个是LSB,哪个是MSB
  • 这个操作符是什么
  • 给出以下表达式:

    3 << 0 | 
    7 << 3 | 
    1 << 6 | 
    0 << 7 | 
    1 << 7 | 
    0 << 8 | 
    0 << 10 |
    0 << 11 | 
    0 << 12 | 
    0 << 13 | 
    0 << 14  
    

    LSB(最低有效位)是其值表示1(2^0)的位,MSB是其值表示2^(n-1)的位,其中n是寄存器中的位数。通常,当以二进制形式写入时,MSB是最左边的位,LSB是最右边的位。通常情况下,LSB在硬件文档中显示为位0,尽管我知道有一家公司将位编号颠倒,以便将MSB编号为0


    请阅读有关位操作的教程。可能还有其他丢失的信息。问一个问题是没有用的,因为你很难对这个领域有一个一致的了解。如果您使用的是C,请阅读一本书。更好的方法还包括与C有关的位操作。对于
    |
    “…这将反转位编号,以便MSB编号为0。”我仅在PPC601文档中的9ties中看到了这一点。非常混乱。
    
    011 111 1 0 1 0 0 0 0 0 0 X.......X
    
    x .....X 0 0 0 0 0 0 1 0 1 111 011