二进制与位运算
题意:求int32整数m和n的二进制表达,有多少个位(bit)不同么?
public int countBitDiff(int m, int n) { int dif = m ^ n;//先将二者做异或运算,得到结果; int cnt = 0; while(dif != 0) { dif = dif & (dif-1); //每一步将cnt中二进制的1的个数减一
cnt++; } //统计一个整数dif含有多少个1; return cnt; }异或 ^:不同则一
取反 ~:
两数对换: A = A^B
B = A^B
A = A^B

浙公网安备 33010602011771号