位運算和基於位運算的快速冪演算法

2021-09-24 21:18:48 字數 550 閱讀 2859

& 與運算(按位與)

| 或運算 (按位或)

^ 異或運算 (按位異或)

~ 取反運算(按位取反)

<<(左移)、>>(右移)移位運算

介紹完二進位制中的基本位運算後,我們開始講解快速冪的演算法:

快速冪是基於二進位制的運算的一種快速演算法

如 3^7= 2187

7的二進位制為(0111)

3^1 =3 ^(2 ^ 0) = 3

3^2 =3 ^(2 ^ 1) = 9

3^4 =3 ^(2 ^ 2) = 81

3 ^13 ^23 ^4=2187

因為任意數都可以由2的次方組合出,因此得出當次方數的二進位制在該位為1時,就乘上底數的(2在當前位置的次方)次方

long long  pow(int base,int m)

return ans;

}`

m為次方數

當base為m當前二進位制位置n底數的2^n的次方數

該演算法的複雜度為log(n)

leetcode 快速冪運算(位運算)

題目描述 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。實現 def mypow self,x float,n int float if x 0 return 0 res 1 if n 0...

基於位運算的快速冪與取餘運算

附上原題 題目描述 輸入b,p,k的值,求bp mod k的值。其中b,p,k為長整型數。輸入格式三個整數b,p,k.輸出格式輸出 bp mod k s s為運算結果 輸入輸出樣例 輸入 2 10 9 輸出 210 mod 9 7 該題需使用快速冪,以下是快速冪的方法 乙個數,例如 15 10 11...

位運算以及快速冪

1.原始碼,補碼,反碼 原始碼 原來的那個 反碼 正數的反碼是它本身,負數的反碼為 除了符號位之外,其他位取反。補碼 正數的補碼不變,負數的補碼 反碼 1 2.位運算 邏輯運算 and 只有兩個都為1,結果為1。xor 1xor1 0 0zor0 0 1xor0 1 0xor1 1 or 0or0 ...