题目描述:如果要将整数A转换为B,需要改变多少个bit位?
样例:如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
之前,我说过位运算的一些基本操作(详见:点击打开链接),此处其实求的是两个二进制中不同的位的个数。所以,可以采用两种方法。
1. 直接求出两个数的二进制表示,然后比较两个01字符串的不同的位的个数
2. 先对两个数异或,这样,求出的二进制数中1的个数就是两个数的不同位的个数
我这里只给出第二种方法的代码。
因为之前已经知道怎么求出一个二进制数中1的个数的方法(详见: