14-用法_切换位
15.3.5 用法:切换位
切换位指的是打开已关闭的位,或关闭已打开的位。可以使用按位异或运算符( ^
)切换位。也就是说,假设 b
是一个位( 1
或 0
),如果 b
为 1
,则 1^b
为 0
;如果 b
为 0
,则 1^b
为 1
。另外,无论 b
为 1
还是 0
, 0^b
均为 b
。因此,如果使用 ^
组合一个值和一个掩码,将切换该值与 MASK
为 1
的位相对应的位,该值与 MASK
为 0
的位相对应的位不变。要切换 flags
中的1号位,可以使用下面两种方法:
flags = flags ^ MASK;
flags ^= MASK;
例如,假设 flags
是 00001111
, MASK
是 10110110
。表达式:
flags ^ MASK
即是:
(00001111) ^ (10110110) // 表达式
其结果为:
(10111001) // 结果值
flags
中与 MASK
为 1
的位相对应的位都被切换了, MASK
为 0
的位相对应的位不变。