确定需要改变几个位,才能将整数A转成B

原创
2016/11/18 15:32
阅读数 25

/**

 * 功能:确定需要改变几个位,才能将整数A转成B。

 */

 

两种方法:

方法一:

[java] view plain copy

 

  1. /** 
  2.  * 思路:使用异或操作。 
  3.  *      确定A^B有几个位为1。 
  4.  * @param a 
  5.  * @param b 
  6.  * @return 
  7.  */  
  8. public static int bitSwapRequired(int a,int b){  
  9.     int count=0;  
  10.       
  11.     for(int c=a^b;c!=0;c>>=1){  
  12.         count+=c&1;  
  13.     }  
  14.       
  15.     return count;  
  16. }  


方法二:

[java] view plain copy

 

  1. /** 
  2.  * 思路:不断反转最低有效位,计算要多少次c才会变成0。 
  3.  * @param a 
  4.  * @param b 
  5.  * @return 
  6.  */  
  7. public static int bitSwapRequired2(int a,int b){  
  8.     int count=0;  
  9.       
  10.     for(int c=a^b;c!=0;c=c&(c-1)){  
  11.         count++;  
  12.     }  
  13.       
  14.     return count;  
  15. }  
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部