c c 位運算及其應用

2021-09-26 18:48:45 字數 1892 閱讀 8083

位運算就是把其他進製的整數,換算成二進位制再進行運算。主要有 &, |, ,  ^ , ~, <<, >> 。注意,位運算的優先度高於邏輯運算的&&,||,!的。

那麼負數的二進位制是怎麼樣的呢? 其實也簡單。先採用餘數定理分解得出其正數的二進位制值,再採用它的補碼正數的補碼和原碼相同,負數的補碼是該數的絕對值的二進位制形式,按位取反後再加1)(注意,最高位為符號為,負數為1,正數為0)顯示,簡單來說就是 「 先按正數轉換,然後取反加1。」

例如:要將十進位制的-10用二進位制表示,先將10用二進位制表示:

-10

0000 0000 0000 1010

取反:

11 1111 1111 010111

加1:

1111 1111 1111 0110

所以,-10的二進位制表示就是:1111 1111 1111 0110

運算規則:只有兩個數的二進位制同時為1,結果才為1,否則為0。(負數按補碼形式參加按位與運算)

即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。

例:3 &5  即 0000 0011 & 0000 0101 = 0000 0001 ,所以 3 & 5的值為1。

運算規則:參加運算的兩個數只要兩個數中的乙個為1,結果就為1。

即  0 | 0= 0 ,  1 | 0= 1  , 0 | 1= 1  ,  1 | 1= 1 。

例:2 | 4 即 0000 0010 | 0000 0100 = 0000 0110 ,所以2 | 4的值為 6 。

運算規則:參加運算的兩個數,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0。

即 0 ^ 0=0  , 0 ^ 1= 1  , 1 ^ 0= 1  , 1 ^ 1= 0 。

例: 2 ^ 4 即 0000 0010 ^ 0000 0100 =0000 0110 ,所以 2 ^ 4 的值為6 。

最後說一下我們最關心的左右移問題。

參加運算的兩個數,換算為二進位制後,進行左移運算,用來將乙個數各二進位制位全部向左移動若干位。

對10左移2位(就相當於在右邊加2個0):

0000 0000 0000 1010

--------------------

0000 0000 0010 1000向左移動,右邊的2位補0,左邊的2位捨去

所以:10 << 2 = 0000 0000 0010 1000 = 40

注意,觀察可以發現,左移一位的結果就是原值乘2,左移兩位的結果就是原值乘4。規律就是乘於2的n次方。

參加運算的兩個數,換算為二進位制後,進行右移運算,用來將乙個數各二進位制位全部向右移動若干位。

對10右移2位(就相當於在左邊加2個0):

0000 0000 0000 1010

--------------------

0000 0000 0000 0010向右移動,左邊的2位補0,右邊的2位捨去

所以:10 >> 2 = 0000 0000 0000 0010 = 2

注意,觀察可取整。以發現,右移一位的結果就是原值除2,左移兩位的結果就是原值除4,規律就是除於2的n次方。注意哦,除了以後沒有小數字的,都是取整

位運算及其應用

按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0。按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1。按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1。取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1,將1變0。左移 用來將乙個數的各二進位制位全...

位運算及其應用詳解

位運算子 位運算是以二進位制位為單位進行的運算,其運算元和運算結果都是整型值。todo 字元型 char 位運算子共有7個,分別是 位與 位或 位非 位異或 右移 左移 0填充的右移 一 邏輯運算子 1.位與運算 1 運算規則 位與運算的實質是將參與運算的兩個資料,按對應的二進位制數逐位進行邏輯與運...

位運算及其應用詳解

一 邏輯運算子 1.位與運算 1 運算規則 位與運算的實質是將參與運算的兩個資料,按對應的二進位制數逐位進行邏輯與運算。例如 int型常量4和7進行位與運算的運算過程如下 4 0000 0000 0000 0100 7 0000 0000 0000 0111 0000 0000 0000 0100 ...