1. 程式人生 > >位運算之判斷奇偶性&1

位運算之判斷奇偶性&1

一個整數 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; }