學習筆記 C語言 位運算

2022-07-29 15:54:29 字數 1471 閱讀 6952

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 234

intmain()

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 補碼是為了表示乙個負數的二進位制...