<< 運算子 和 >> 運算子的作用是求出將整數中的所有位左移或右移之後生成的值。
<< 運算子
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所示。移位時,移出的位數全部丟棄,移出的空位補入的數與左移還是...