二进制位运算符-开关作用中异或运算的表述是否有误?
zhongfly opened this issue · 1 comments
zhongfly commented
原文写道:
var FLAG_A = 1; // 0001
var FLAG_B = 2; // 0010
var FLAG_C = 4; // 0100
var FLAG_D = 8; // 1000
var flags = 5; // 二进制的0101
var mask = FLAG_A | FLAG_B | FLAG_D;//二进制的1011异或运算可以切换(toggle)当前设置,即第一次执行可以得到当前设置的相反值,再执行一次又得到原来的值。
flags = flags ^ mask;
即第一次执行时,0101(flags)与1011(mask)做异或运算,得到1110,与当前设置(0101)的相反值1010并不一样。
此处是否表述有误,抑或是我理解有误?
zhongfly commented
抱歉,是我理解有误。切换标志位的话,是对A、B、D三个”开关“进行切换,结果的确应该是1110