我怎样才能解释<<和|在C.

时间:2016-05-10 00:33:41

标签: c

我需要帮助才能理解本声明中发生的事情:

#define LDA(m)  (LDA_OP << 5 | ((m) & 0x001f))

谢谢

2 个答案:

答案 0 :(得分:0)

y << xy的{​​{1}} xx & yxy的{​​{3}}。

答案 1 :(得分:0)

因此,左移运算符就像在基数10中乘以10,而是在基数2中乘以2,例如:

在基地10

300 * 10 = 3000

在基地2:

0b0001 * 2 = 0b0010 = 0b0001&lt;&lt; 1

与&lt;&lt; b你&#34;推&#34;数字a,b放在左边。

和or运算符(|) 你需要取两位,如果其中一个或两个都为真(1)那么结果为真。

例如:

0b0010 | 0b0001 = 0b0011

0b0010 | 0b0010 = 0b0010

如果您对此运算符有问题,只需尝试使用相同的数字,但使用二进制数。