如何使用二进制1的LEFT SHIFT和RIGHT SHIFT工作?

时间:2017-08-24 12:20:58

标签: bit-manipulation bit-shift shift pic32

我知道Task

(10001010<<2) = 00101000

当我只有这样的一点时,如何转移 (10001010>>2) = 00100010

2 个答案:

答案 0 :(得分:0)

C中1的类型为int,总是大于1位。

请注意,右移有符号数量是实现定义的,但我想大多数都会给出0,因为只有一个存在,并且它在第一次移位后消失了。

答案 1 :(得分:0)

首先,如果你这样做(010101&lt;&lt; 1),那么它将考虑&#34; 010101&#34;作为十进制数而不是二进制数。符号&#34; 0bxxx&#34;告诉编译器你的号码是二进制的(0b010101)。 对于单个位(您的问题),1个十进制= 1个二进制,因此您可以使用1.但是(1&gt;&gt;任何事情)应该始终为您提供0,因为您似乎知道。

如果你想向左移,那么这个条件将返回TRUE:

if( 8 == (1 << 3))

因为(0b0001 <&lt; 3)= 0b1000 = 8