平時在做奇偶數判定時,往往採用對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有影象可...