lintcode_181. 将整数A转换为B
如果要将整数A转换为B,需要改变多少个bit位?
注意事项
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
按位与,非0累计
class Solution: """ @param: a: An integer @param: b: An integer @return: An integer """ def bitSwapRequired(self, a, b): # write your code here ans = 0 for i in range(32): if a & 1 != b & 1: ans += 1 a >>= 1 b >>= 1 if a == b: return ans return ans
实际为统计ab异或后非0个数
九章算法:
class Solution: """ @param a, b: Two integer return: An integer """ def bitSwapRequired(self, a, b): # write your code here c = a ^ b # a b 异或 cnt = 0 for i in xrange(32): if c & (1 << i) != 0: cnt += 1 return cnt