肯定須要改變幾個位,才能將整數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. }  
相關文章
相關標籤/搜索