c = c&(1 << bit)有什么作用?

Kee*_*nen 1 java int

鉴于c是一个int,我不明白该语句的c = c & (1 << bit)作用.任何帮助都非常感谢!

Oli*_*rth 11

它掩盖了一切,但bit的第位c.

例如,如果c = 27bit = 3:

         c = 27 = 00011011 (binary)
(1 << bit) =  8 = 00001000
    result =      00001000 = 8
Run Code Online (Sandbox Code Playgroud)

何时bit = 2:

         c = 27 = 00011011 (binary)
(1 << bit) =  4 = 00000100
    result =      00000000 = 0
Run Code Online (Sandbox Code Playgroud)

请注意,结果将等于(1 << bit)(2的幂)或0.


Luk*_*der 6

它将所有位设置c为零,除了bit从右侧开始计数的位.该特定位保持不变.从本质上讲,这是检查位置位bit是否设置(c > 0或不是c == 0)的一种方法()