C語言 位移運算子的使用

2021-10-07 04:21:23 字數 832 閱讀 5023

<< 運算子 和 >> 運算子的作用是求出將整數中的所有位左移或右移之後生成的值。

<< 運算子

a << b

將 a 左移 b 位。右面空出的位用0填充

>>運算子

a >>b

將a右移b位

:這些運算子的運算元必須是整數類資料型別或列舉型

#include

intcount_bits

(unsigned x)

x >>=1;

}return count;

}int

int_bits

(void

)void

print_bits

(unsigned x)

}int

main

(void

)

總結:

使用 << 運算子進行左移

表示式 x << n 會將x的所有位左移 n 位,並在右邊空出的位(低位)上補0。二進位制的每一位都是2的指數冪,所以左移 1 位後,只要沒有發生資料溢位,值就會變為原來的2倍。

使用 >> 運算子進行右移

表示式 x >> n 會將x的所有位右移n位。二進位制數右移 1 位後,值會變為原來的二分之一。

當 x 時有符號整型的複數是,位移運算的結果因編譯器而異。在許多編譯器中,會執行邏輯位移或算術位移。

注:雖然可以對負數進行位移,對乙個數做負數字移位的操作是不規範的,所以最好不要對負數進行位移。

c 位移運算子

左移運算子 將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。例如 1100100 2 110010000,1100100左移兩位後為 1100100口口,補0後為110010000。右移運算子 將第乙個運算元向右移動第二個運算元所指定的位數,空出的位置補0。例如 1100100 2 0...

位移運算子

位移運算子 直接操作二進位制數,運算速率更快。按位非 not 把1變成0,把0變成1 超出運算範圍,變成負數 var a 25 var b a b 25的 二進位制數 00000000000011001 轉化後 11111111111100010 結果為 26 總結非運算 乙個數與自身的取反值相加等...

C語言中位移位運算子

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