位與 乙個數 1的結果

2021-10-21 20:20:07 字數 1013 閱讀 2009

在計算機中,位與的符號是&,運算過程是false&false=false, true&false=false, true&true=true

故任何乙個數&1的結果有:

0&1=0

1&1=1

2&1=0

3&1=1……

…1234&1=0

4321&1=1

可以看出乙個奇數(十進位制)位與1的結果是1乙個偶數(十進位制)位與1的結果是0

我們分析一下幾個例子,3和987都是十進位制數:

3&1在計算過程是:

1101—01

所以: 3&1=01=1

987&1在計算過程是:

1111011011

0000000001

----------------

0000000001

所以: 987&1=0000000001=1

任何乙個數位與1,則1會在前面補上相應個0,然後和那個數進行位與計算,所以結果不是0就是1,因此,我們常常用乙個數&1來判斷乙個數是奇數或偶數。

1,比如在資料庫中,我們獲取所有奇數的id,就可以直接:

select id from mytable where id&

1;

2,在程式設計中判斷乙個數是否為奇數:

int number =

789;

if(number &1)

else

位運算是最靠近計算機底層的,所以計算效率特別高,尤其在資料量超大的情況下,優勢很明顯。

與或運算常常用於判斷奇偶

移位運算常常用於倍數運算

求乙個數中1的個數

碰到遇到乙個有趣的題,求乙個數二進位制的表示中1的個數,該題有兩種解法,一種是使用短除法將該數直接轉化為二進位制數,另一種比較巧妙的演算法是使用與運算,原理如下圖所示 依照此種思入有如下演算法 int numberof1 solution3 int i return count 依照短處法的思路 有...

1086 逆轉乙個數中的位

逆轉乙個數中的位 time limit 1000ms memory limit 65536k total submit 205 accepted 58 description pzzer從不放棄任何一絲希望,只要有希望都想來個大逆襲,不過這次是想把乙個無符號數x的位逆轉過來,如10進製19 1001...

計算乙個數中1的個數 0的個數

1.求乙個int數二進位制中1的個數 1 與1 右移 正數 負數都可以 計算的是負數補碼中1的個數 inta cin a int count 0 int n sizeof int 8 位數for int i 0 i a 1 右移一位 cout 2 右移相當於除以2 判斷最低位可用2取餘 右移可用除以...