1、前言
c的位運算子有&(按位與)、|(按位或)、^(按位異或)、~(按位取反),位運算子把運算物件看作是由二進位制位組成的位串資訊,按位完成指定的運算,得到相應的結果。
2、位運算子
在上面提到的運算子中,~(按位取反)為單目運算子,其它的都為雙目運算子,位運算子的優先順序從高到低,依次為~、&、^、|。
(1)按位與運算子(&)
按位與運算子按照以下規則進行計算:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
也就是同為1的位,結果為1,否則為0。
按位與運算有兩種典型用法,第一種是取位串的某幾位,例如擷取x的最低8位:x & 0x00ff,第二種是讓變數保留某幾位,其餘位置0,例如讓x保留高8位:x = x & 0xff00。
(2)按位或運算子(|)
按位或運算子按照以下規則進行計算:
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
也就是,只要是有1個是1的位,運算結果為1,其餘為0。
按位或運算子的典型用法是將乙個位串資訊的某幾位置1,例如將x的最低2位置1:x = x | 0x03。
(3)按位異或運算子(^)
按位異或運算子按照以下規則進行計算:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
也就是,對應位的值相同,則結果為0,對應位的值不同,則為1。
(4)按位取反運算子(~)
按位取反運算是單目運算,用來求乙個位串資訊按位的反,也就是,哪些為0的位,執行結果為1,而哪些為1的位,結果是0,例如,x的值為0x07,則~x的結果為0xf8。
按位取反運算子的典型運用為,和&運算子結合使用,將某幾位設定為0,例如,將x的最低2位進行清0操作,x為0xf3,則將最低2位進行清0,可以使用x = x & ~0x03,將語句執行後,x將變成0xf0。
C 位運算子
c 源自c,在提供高階語言便利的同時,也繼承了c在硬體程式設計方面的功能。因此適用於編寫裝置驅動和嵌入式大 c c 提供位邏輯運算子和移位運算子。二者只能用於整形和字元型。位運算子是對每位進行操作而不影響左右兩位,這有別於常規運算子 是將整個數進行操作的。一 位邏輯運算子 1 按位取反 將1變為0,...
C 位運算子
最近工作專案壓力不大,便繼續開始自學c 發現基礎知識忘記的差不多了.上網搜尋了一些基礎的不能再基礎的東西,溫故知新.c 位運算子 http www.diybl.com course 3 program c cppjs 20090403 163995.html c c 提供位邏輯運算子和移位運算子。二...
C 位運算子
位運算子作用於位,並逐位執行操作。和 的真值表如下所示 pq p qp q p q000 0001 0111 1110 1001 1假設如果 a 60,且 b 13,現在以二進位制格式表示,它們如下所示 a 0011 1100 b 0000 1101 a b 0000 1100 a b 0011 1...