位運算就是把其他進製的整數,換算成二進位制再進行運算。主要有 &, |, , ^ , ~, <<, >> 。注意,位運算的優先度高於邏輯運算的&&,||,!的。
那麼負數的二進位制是怎麼樣的呢? 其實也簡單。先採用餘數定理分解得出其正數的二進位制值,再採用它的補碼(正數的補碼和原碼相同,負數的補碼是該數的絕對值的二進位制形式,按位取反後再加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 ...