鉴于c是一个int,我不明白语句c = c & (1 << bit)
的作用。任何帮助都非常感谢!
答案 0 :(得分:11)
除了bit
的{{1}}之外,它会掩盖所有内容。
e.g。如果c
和c = 27
:
bit = 3
以及 c = 27 = 00011011 (binary)
(1 << bit) = 8 = 00001000
result = 00001000 = 8
:
bit = 2
请注意,结果将等于 c = 27 = 00011011 (binary)
(1 << bit) = 4 = 00000100
result = 00000000 = 0
(2的幂)或(1 << bit)
。
答案 1 :(得分:6)
它将c
中的所有位设置为零,但位置bit
的位从右侧开始计数除外。该特定位保持不变。从本质上讲,这是检查位置bit
上的位是否设置(c > 0
)或不设置c == 0
)