第一種解法:
迴圈遍歷無符號整數二進位制的每一位判斷是否為1。
如果二進位制中有較多的0,每次右移一位做出判斷會很浪費
func
countofones
(num:
uint)-
>
uint
return
count
}
第二種解法:
使用技巧num = num & (num - 1)
消去二進位制中最低位的1。
如果最低位為1,num-1後相應位為0,相與之後為0;如果最低位為0,num-1向前借1,有1位則變為0,相與之後為0,則消去了最低位的1。
統計消去次數,便是二進位制1的個數
func
countofones
(num:
uint)-
>
uint
return
count
}
乙個整數如果是2的整數次方,那麼它的二進位制表示中有且只有一位是1,而其他位都是0,如果使用num = num & (num - 1)
消去最低位1後,num為0。即判斷是否為0,即可判斷是否為2的整數次冪。
func
ispoweroftwo
(num:
uint)-
>
bool
技巧:0異或任何數為0,乙個數異或自己為0
解法:陣列中的數成對出現,缺失乙個數,將所有數異或起來便剩下缺失的數(其他所有成對的數異或為0)
//將temp分為temp和flag的異或
while
((temp & flag)==0
)//對nums進行分組
for num in nums
else
}return
(lostnum1, lostnum2)
}
Swift 位運算子
import foundation 位運算子通常在如影象處理和建立裝置驅動等底層開發中使用,使用它可以單獨運算元據結構中原始資料的位元位。去使用乙個定義的協議進行通訊的時候,運用位運算子來對原始資料進行編碼和解碼也是非常有效的。1.按位取反運算子 按位取反運算子 是對乙個運算元的每一位都取反 let...
演算法 位運算
public static intpowern int m,int n return m public static void main string args public static boolean ispower int n return false num如何使2的n次冪,那麼num nu...
演算法題型 位運算
目錄 一 題型1 不使用中間量交換兩個值 二 劍指offer47.求1 2 n 三 劍指offer48.不使用加減乘除做加法 第一種方法,數 算 若a 1,b 2 a a b 3 b a b 1 a a b 2 第二種方法,位異或運算 若a 1 01b,b 2 10b a a b 01 10 11 ...