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 的位相对应的位不变。