C 16 位運算子分析

2021-10-01 10:18:25 字數 1071 閱讀 1264

位運算子直接對 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 而...