1.问题描述:
如果要将整数A转换为B,需要改变多少个bit位?
2.样例:
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
3.代码:
本题核心思路是利用,将整数通过移位并与1进行与操作,即可判断当时末尾是否为1。
class Solution:
"""
@param: a: An integer
@param: b: An integer
@return: An integer
"""
def bitSwapRequired(self, a, b):
# write your code here
a=a^b
count=0
for i in range(32):
if a&1:
count+=1
a=a>>1
return count
补充位运算的内容:
&:按位与操作,只有 1 &1 为1,其他情况为0。可用于进位运算。
|:按位或操作,只有 0|0为0,其他情况为1。
~:逐位取反。
^:异或,相同为0,相异为1。可用于加操作(不包括进位项)。
<<:左移操作,2的幂相关
>>:右移操作,2的幂相关