位操作符,主要包括
與,或 符&,|
取反符 ~
移位符 <<,>>
異或符 ^
開始前先看一段實現二進位制輸出的**,方便觀察位操作
參考鏈結知乎作者——碼農愛學習
void
printf_bin
(int num)
printf
(" ");
//每8位加個空格,方便檢視
}printf
("\r\n");
}
與0清0,與1不變
功能1:提取位資料
功能2:清除(0)
e.g.
#include
intmain()
或1置1,或0不變
功能: 置1
示例: 將int的變數a的第22-23位置1,其他位不變
int a ;
a = a |
0xc00000
取反1變為0,取反0變為1
示例: 將int的變數a的第28位清0,其他位不變
a = a &~(
0x10000000
);
移位運算子實現的是左移/右移
左移時最左位(包括符號位)移出記憶體空間,最右位補零
右移時最右位移除,最左位補零
char c =
0x80
=0b 1000
0000
a = a &~(
0x1<<28)
a &=~(
0x1<<28)
;a = a +3;
a +=3;
a = a &~(
0x3<<26)
;
迴圈左右移則最左位與最右位相連(位操作實現不了)
異或1取反,異或0不變
示例:將a的第28位異或1,即將a的第28位取反
與 取反 ~ 的區別 在於 異或 ^ 的直接操作物件為 a中的第28位
a = a ^
(0x1
<<28)
;
補充
原碼、反碼、補碼
C語言位運算子
一.c語言位運算子簡介 c語言的位運算子有六種,分別是 右移運算子 左移運算子 按位與運算子 按位或運算子 按位異或運算子 按位取反運算子 這些運算子都是對於基本資料型別的二進位制位進行操作的,這裡我們只討論整型資料型別的位運算 二.各個運算子的具體使用 右移運算子 將整數的二進位制形式整體向右移動...
C語言 位運算子
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 1 按位與 運算子 按位與是指 參加運算的兩個資料,按二進位制位進行...
C語言位運算子
語言位運算子 與 或 異或 取反 左移和右移 位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按...