1:按位與 &
2:按位或 |
3:按位異或 ^
注意:運算元必須是整數
1:按位與(按二進位制進行相與)
#define _crt_secure_no_warnings 1
#include
#include
intmain()
2 在32位補碼中是 00000000000000000000000000000010
3 在32位補碼中是 00000000000000000000000000000011
相與的結果是 00000000000000000000000000000010
所以結果是2
注意用補碼去與
例如 -1 和1相與
-1 :1111111111111111111111111111111
1:00000000000000000000000000000001
按位與的結果是1
按位或
#define _crt_secure_no_warnings 1
#include
#include
intmain()
同樣道理用補碼進行或運算
可得結果是 -1
按位異或
注意結果是
相同為0,相異為1;
-1 :1111111111111111111111111111111
1:00000000000000000000000000000001
1111111111111111111111111111110
得到結果是 -2
#define _crt_secure_no_warnings 1
#include
#include
intmain()
應用:不建立臨時變數,實現2個數的交換
#define _crt_secure_no_warnings 1
#include
#include
intmain()
規律:a^a = 0;
a^0 = a
異或的應用
給定一組數字找出出現1次的數字
1 2 3 4 5 4 3 2 1
如果遍歷查詢,就會出現每個元素都要遍歷一次,會導致效率極低。
演算法就是全部異或起來
看**說話`
#define _crt_secure_no_warnings 1
#include
#include
intmain()
結果為 5 c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
c語言 位操作符和邏輯操作符
按位與 按位或 按位異或 注 他們的運算元必須是整數。兩個整數字元位有假 0 就為假 0 只有全為真 1 就為真 1 舉個例子 老師叫兩個學生來辦公室,說張三與 李四過來,如果只乙個人過去就不滿足老師說的話 為假 必須兩個人都過去 為真 兩個整數字元位只要有真就為真,只有全為假 0 就為假 0 舉個...
c 位操作符
我們知道,任何資訊在計算機中都是以二進位制的形式儲存的。位操作符就是對資料按二進位制進行運算的操作符。c 語言中的位操作符有 與 或 異或 取補 左移 右移 其中,取補只有乙個運算元,而其它的位操作符都有兩個運算元。這些運算都不會產生溢位。位操作符的運算元為整型或者是可以轉換為整型的任何其它型別。與...