位運算子直接對 bit 位進行操作,其效率最高
左運算元必需為整數型別
右運算元的範圍必需為:【0,31】
左移運算子 << 將運算子的二進位制位左移動
右移運算子 >> 把運算子的二進位制位右移動
問題:
下面的運算結果是什麼?
0x1 << 2 + 3
實驗:
#include int main()
輸出
121-1
321 // gcc編譯器下認為左移-1 相當於右移1
運算優先順序:四則運算》位運算》邏輯運算移位為負數的情況下和不同編譯器情況是不一樣的(依賴編譯器)
程式設計試驗:交換兩個整型變數的值
#define swap1(a, b) \
// 這個問題 a b 資料過大,會導致資料溢位
#define swap2(a, b) \
#define swap3(a, b) \
#include int main()
printf("%d\n", i);
printf("%d\n", j);
printf("%d\n", k);
return 0;
}
輸出:
//run here...
//1//0
//0run here...11
1
16 位運算子分析
注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 位運算子分析 1 c語言中的位運算子 位運算子直接對bit位進行操作,其效率最高。2 左移和右移注意點 左運算元必須為整數型別 char 和 short被隱式轉換為int後...
c語言深度剖析 16 位運算子分析
1.c語言中的位運算子 2.左移和右移注意點 3.有趣的問題 0x1 2 3 的值會是什麼?include include int main 4.小貼士 防錯準則5.程式設計實驗 include include 利用中間變數交換 define swap1 a,b 利用部分和來交換 define sw...
位運算子分析
注意按位運算子 和 與邏輯運算子 和 完全是兩碼事,別混淆了。結合律 a b c a b c a b c 交換律 a b b a 左移和右移 左移運算子 右移運算子 是雙目運算子。其功能把 左邊的運算數的各二進位全部右移若干位,右邊的數指定移動的位數。但注意 對於有符號數,當為正數時,最高位補0 而...