位運算之判斷奇偶性&1
阿新 • • 發佈:2019-01-11
一個整數 n,n&1 這個表示式 可以用來 判斷 a的奇偶性。
二進位制的末位為 0表示偶數,末位為 1表是奇數。
使用 n%2 來判斷奇偶性 和 n&1 是一樣的作用,但是 n&1 要快好多。
按位與:& 將參與運算的兩運算元各對應的二進位制位進行與操作, 只有對應的兩個二進位均為1時,結果的對應二進位制位才為1,否則為0
記住:在做位運算時,位數不夠的數,自動在 前面補 0 比如:21 & 1 :10101 & 00001 = 00001 = 1
16 & 1 :10000 & 00001 = 00000 = 0
事實證明:偶數的二進位制的末尾 為0,奇數的二進位制的末尾 為1
十進位制m 轉換 n進位制方法: m 一直除 n,每相除一次,m就等於商,直到商為0,然後餘數反排 即可。
1的二進位制:1/2 =0 餘1
餘數反排 即是 1的二進位制:1
6的二進位制:6/2 =3 餘0
3/2 =1 餘1
1/2 =0 餘1
餘數反排 即是 6的二進位制:110
15的二進位制:15/2=7 餘1
7/2=3 餘1
3/2=1 餘1
1/2=0 餘1
餘數反排 即是 15的二進位制:1111
5的二進位制:5/2 =2 餘1
/ 2/2 =1 餘0
1/2 =0 餘1
餘數反排 即是 5的二進位制:101
21的二進位制:21/2 =10 餘1
10/2 =5 餘0
5/2 =2 餘1
2/2 =1 餘0
1/2 =0 餘1
餘數反排 即是 21的二進位制:10101
程式碼如下:
#include <stdio.h>
int main(){
int n;
while(~scanf("%d",&n)){
if(n&1)
printf("%d是奇數\n",n);
else
printf ("%d是偶數\n",n);
}
return 0;
}