C語言之位移位運算子和按位運算子

2021-08-27 07:18:26 字數 574 閱讀 2456

近期做串列埠實驗,遇到將十六進製制轉換成char型字元的問題,程式中用到了位移位運算子和按位或運算子

a. 位移位運算子

<< 左移,>>右移

運算子左邊為移位物件,右邊為要移的位數。移位物件為整數值(若 char a = 61, 則 a 也可以作為移位物件,若 char a = 『a』,則會出錯。總之,你要移的物件一定是乙個整數)。若為左移,不論是有符號還是無符號,移出位丟失,空出位補0;若為右移,對於有符號,空出位補原符號位。

例子:int a = 5;

a >>= 1; // 此時a為2,右移一位相當於除2(速度上要比除法快)

注:a >> 1, a 本身的值不會改變, a >>= 1 相當於 a = a >> 1

b. 按位或運算子

char a;

char b = 4;

char c = 12;

a = (b << 4) | c;

列印 a 為 'l'

b 的二進位制表示為 100, 左移4位為 1000000, c 的二進位制表示為 1100,二者或運算(相應位有1則1),結果為 1001100,對應十進位制為76,對應字元『l』。

C語言按位運算子 按位邏輯運算 移位運算 及其用法

c語言提供了四種按位邏輯運算子 注 他們的運算元必須是整數。1.按位取反 運算子把0變為1,把1變為0,如下例子所示 0100 1001 10110110,這裡需要注意的是 假設val的型別是unsigned char,已被賦值為2。在二進位制中,0000 0010表示2。那麼,val的值是 111...

C語言中位移位運算子

位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。位移位運算子分為左移和右移兩種,均為雙目運算子。第一運算物件是移位物件,第二個運算物件是所移的二進位制位數。位移位運算子的運算物件 運算規則與結果 結合性如表2 16所示。移位時,移出的位數全部丟棄,移出的空位補入的數與左移還是...

C語言中位移位運算子

位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。位移位運算子分為左移和右移兩種,均為雙目運算子。第一運算物件是移位物件,第二個運算物件是所移的二進位制位數。位移位運算子的運算物件 運算規則與結果 結合性如表2 16所示。移位時,移出的位數全部丟棄,移出的空位補入的數與左移還是...