位運算經典演算法(Swift)

2021-10-01 03:41:19 字數 1429 閱讀 4355

第一種解法:

迴圈遍歷無符號整數二進位制的每一位判斷是否為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 ...