【发布时间】:2015-06-18 20:21:17
【问题描述】:
我必须使用这些数据更新 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
剩下的 15 位是0。
假设寄存器中的初始位为 0,数据如何移位?
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
【问题讨论】:
-
请阅读有关位操作的教程。可能还有其他缺失的信息。问一个问题是没有用的,因为你很难对这个领域有一个一致的了解。如果您使用 C,请阅读一本书。更好的还涵盖了与 C 相关的位操作。对于
|和<<,请注意这些对于每种语言都不相同。尤其是移位运算符的行为可能与您的实际预期不同 - 尤其是右移位。
标签: embedded