1. & 按位與
1> 功能
只有對應的兩個二進位均為1時,結果位才為1,否則為0。
2> 舉例: 比如9&5,其實就是1001&101=1,因此9&5=1
3> 規律
二進位制中,與1相&就保持原位,與0相&就為0
2. | 按位或
1> 功能
只要對應的二個二進位有乙個為1時,結果位就為1,否則為0。
2> 舉例: 比如9|5,其實就是1001|101=1101,因此9|5=13
3. ^ 按位異或
1> 功能
當對應的二進位相異(不相同)時,結果為1,否則為0。
2> 舉例: 比如9^5,其實就是1001^101=1100,因此9^5=12
3> 規律
相同整數相^的結果是0。比如5^5=0
多個整數相^的結果跟順序無關。比如5^6^7=5^7^6
因此得出結論:a^b^a = b
4. ~ 取反
對整數a的各二進位進行取反,符號位也取反(0變1,1變0)
5. << 左移
把整數a的各二進位全部左移n位,高位丟棄,低位補0。左移n位其實就是乘以2的n次方
由於左移是丟棄最高位,0補最低位,所以符號位也會被丟棄,左移出來的結果值可能會改變正負性
6. >> 右移
把整數a的各二進位全部右移n位,保持符號位不變。右移n位其實就是除以2的n次方
為正數時, 符號位為0,最高位補0
為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定
7.學習**
1 #include 234intmain()
5
1 #include 23/*4使用位異或運算子交換兩個變數的值5*/
67intmain()
8
1 #include 2/*3用位與&運算子判斷變數的奇偶性4*/
5int
main()
6 else
*/25
26//
a%2==0?printf("偶數\n"):printf("奇數\n");
2728
//a%2?printf("奇數\n"):printf("偶數\n");
2930
3132
return0;
33 }
1/*2寫乙個函式,用來輸出整數在記憶體中的二進位制形式3*/
45 #include 6
void printbinary(int
number);78
intmain()925
26void printbinary(int
number)
2747}48
49 printf("\n"
);50 }
c語言位運算 C語言學習筆記(二)位運算
這一節主要說的是位運算,計算機中的執行速度 位運算 加減 乘除 求餘 位運算就是將數字轉換成二進位制後進行運算,之後再將數字轉換成原來的進製 與運算 當兩個數相與時,只有都為l的時候結果才為1,其餘情況結果都為0,符號 include int main 這個程式可以判斷a是偶數還是奇數,輸出為1說明...
C語言位運算 學習筆記
位運算是指按二進位制位進行的運算,實際上就是直接對整數在記憶體中的二進位制位進行操作。二進位制通俗來說就是只有0和1兩個可用的數字來表示一切狀態,方便理解可以說成是一盞燈的開和關兩種狀態,狀態有何用?對計算機來說使用者輸入資料,然後顯示這個簡單的過程就需要人機互動,即使用者和計算機的溝通,也可以說是...
C語言學習 位運算
原碼 就是前面所介紹的二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。反碼 表示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。補碼 表示法規定 正數的補碼與其原碼相同 負數的補碼是在其反碼的末位加 1 補碼是為了表示乙個負數的二進位制...