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

/**java

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

 */ui

 

两种方法:spa

方法一:.net

[java] view plain copyblog

 

  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. }  


方法二:ip

[java] view plain copyget

 

  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. }  
相关文章
相关标签/搜索