我知道Task
那(10001010<<2) = 00101000
当我只有这样的一点时,如何转移
(10001010>>2) = 00100010
答案 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