使用位運算判斷奇偶性

2021-09-11 15:18:46 字數 915 閱讀 3471

平時在做奇偶數判定時,往往採用對2取餘看結果是0和1的方式來判斷,現在提供一種通過位運算判斷奇偶性的方法:

整數中,能被2整除的數是偶數,不能被2整除的數是奇數

整數不僅包括0和整數,而且也包括負整數,這種方式如果是根據取餘結果來判斷是否為0來判斷偶數、奇數的話還是可以的,但是如果用1來判定的就糟了(因為負奇數對2取餘結果為-1)。其實將整數用二進位制表示後,可以很方便的進行奇偶性的判斷,因為偶數,無論是正整數還是負整數,二進位制表示時其最低位為0;奇數,無論是正整數還是負整數,二進位制表示時其最低位都為1(二進位制正負數表示參考),利用這一特性,可以非常方便快速的完成判斷。

c語言**

#include int isodd(int n)

int main(int argc, char const *ar**)

else

} return 0;

}

python**

def is_odd(n):

return true if n & 1 == 1 else false

for i in range(-10, 10):

if is_odd(i):

print("{} is odd".format(i))

else:

print("{} is even".format(i))

理論上,位運算比對2取模要快,在看原始碼時也會經常發現這種用法,但實際操作時會發現兩者其實效率差不多,這是因為編譯器會將對2的指數的取模操作,優化成位運算操作,也就是說對於程式中的對2n的取模,編譯器會將其自動優化,所以實際測試時感覺效能差不多!

C 使用位運算判斷整數的奇偶性

判斷整數奇偶性的方式大多數為除以2檢視餘數是否為1.另外有一種方法,可以通過位與運算判斷整數的奇偶性 如下面 include using namespace std int main int a 5 if a 1 1 cout jishu endl else cout oushu endl int ...

1085 判斷奇偶性

判斷奇偶性 time limit 1000ms memory limit 65536k total submit 128 accepted 58 description 計算乙個無符號整數x的二進位制中1的個數是奇數還是偶數。input 多組測試資料。每組測試資料報括乙個無符號整數n 0 n 2 3...

使用定義判斷函式的奇偶性

判斷函式 f x ln x sqrt 的奇偶性。log mn log m log n 在 matlab 下面的 在 matlab 9.1.0.441655 r2016b 中測試通過 中輸入如下 x 0 0.01 10 semilogy x,log x 可以繪製出 y ln x 的影象 圖 1有影象可...