C語言位運算 學習筆記

2021-09-02 23:31:49 字數 846 閱讀 7860

位運算是指按二進位制位進行的運算,實際上就是直接對整數在記憶體中的二進位制位進行操作。

二進位制通俗來說就是只有0和1兩個可用的數字來表示一切狀態,方便理解可以說成是一盞燈的開和關兩種狀態,狀態有何用?

對計算機來說使用者輸入資料,然後顯示這個簡單的過程就需要人機互動,即使用者和計算機的溝通,也可以說是鍵盤和主機的溝通,這個溝通的中間經歷了什麼?顯示器和主機的溝通,主機和鍵盤的溝通,這個溝通其實就是一種協議,協議上可能這樣寫著,你鍵盤上按下乙個鍵,主機就會記錄成乙個狀態,主機把這個狀態告訴顯示器,顯示器又通過和主機的協議來進行顯示。這裡的狀態就是儲存在計算機記憶體中的0和1,而實則是正負電荷。

1 & 1 = 1

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

~1 = 0

~0 = 1

1 << 6 即0000 0001 變成 0100 0000 數值變大,即1乘以2的6次方
64 >> 6 即0100 0000 變成 0000 0001 數值變小,即64除以2的6次方
struct bitfield

// 這裡規定了a,b,c的儲存位的長度,a只能是2位,b只能是3位,c只能是4位

位運算學習筆記

1.補碼 補碼是為了表示乙個負數的二進位制形式。其轉化方式是,先將負數當成正數,轉化成二進位制的形式,再將二進位制正數的各個位上取反,再加上 例如 5先求出5的二進位制數 0000 0000 0101 然後將各個位上0變1 1變0 1111 1111 1010 最後再加1 1111 1111 101...

位運算學習筆記

要明白位運算是在二進位制中的運算方式,所有其他進製的數在進行位運算時都要先轉化成二進位制數再進行運算。int 是 32位二進位制。有符號整型 正數 0 負數 1 1 00000.0001 1 10000.00011.按位與 只有當x,y都是1的時候,運算結果才是1,其餘情況都是0.1 1 1 1 0...

位運算學習筆記

1 二進位制最高位是符號位 0代表正數,1代表負數 2 正數的原碼 反碼 補碼都相同 3 負數的反碼是將原碼符號位不變,其他位取反。4 負數的補碼是將反碼 1 5 0的原碼 補碼都是0 6 計算機中是依據補碼進行計算的。7 練習 1 2 例題說明 對2按位取反。由於2為正數,正數的原碼 補碼相等。所...