C語言入門知識:位運算
導語:C語言作為一門非常適合程式設計入門的語言,打好基礎的重要性不言而喻。下面是其位運算的相關知識,歡迎閱讀:
一、位運算子
在計算機中,資料都是以二進位制數形式存放的,位運算就是指對儲存單元中二進位制位的運算。C語言提供6種位運算子。
二、位運算
位運算子 & |~<< >> ∧ 按優先順序從高到低排列的順序是:
位運算子中求反運算“~“優先順序最高,而左移和右移相同,居於第二,接下來的.順序是按位與 “&“、按位異或 “∧“和按位或 “|“。順序為~ << >> & ∧ | 。
例1:左移運算子“<<”是雙目運算子。其功能把“<< ”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。
例如:
a<<4
指把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。
例2:右移運算子“>>”是雙目運算子。其功能是把“>> ”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數。
例如:
設 a=15,
a>>2
表示把000001111右移為00000011(十進位制3)。
應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。
例3:設二進位制數a是00101101 ,若通過異或運算a∧b 使a的高4位取反,低4位不變,則二進位制數b是。
解析:異或運算常用來使特定位翻轉,只要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。異或運算還可用來交換兩個值,不用臨時變數。
如 int a=3 , b=4;,想將a與b的值互換,可用如下語句實現:
a=a∧b;
b=b∧a;
a=a∧b;
所以本題的答案為: 11110000 。