今天愛站技術頻道小編為大家帶來詳細介紹中的位運算符、移位運算,其實說到運算符,移動運算是比較複雜的,它有一定的規則,和運算方法,一起跟着小編的步伐來學習吧!
一.位運算
Java中有4個位運算,它們的運算規則如下:
(1)按位與 (&) :兩位全為1,結果為1,否則為0;
(2)按位或 (|) :兩位有一個為1,結果為1,否則為0;
(3)按位取反(~):0 變 1, 1變0;
(4)按位異或(^):兩位,如果相同,結果為0;如果不同,結果為1;
注意:
(1)位運算中的 符号位(最高位)也跟着變;
(2)位運算符與邏輯運算符(邏輯與&&、邏輯或||、邏輯非! )有點相似。但是,邏輯運算符隻能操作boolean變量
(也就是左右兩邊的值都是boolean值);
二.位運算應用
(1) ~5 = ?
a) 5的補碼為:
00000000 00000000 00000000 00000101
b) 5的按位取反(~)為:
11111111 11111111 11111111 11111010
注意:因為高位數是1(負數),是以要将該補碼轉換為原碼;如果高位數是0(正數)的話, 就不用将補碼轉為原碼,因為正數的原碼、反碼、補碼都一樣。
c) 将該負數的補碼轉為反碼:
11111111 11111111 11111111 11111001
d) 将該負數的反碼轉為原碼:
10000000 00000000 00000000 00000110
e) 将二進制原碼 轉換為 十進制:
10000000 00000000 00000000 00000110 = 0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 (最高位為1,是以為負數)
三. 移位運算:
Java中有3個移位運算符。
(1) 算術右移 (>>): 低位溢出,符号位不變,并用符号位補溢出的高位;
例如:a >> b :a是要移動的數,b是要移動的位數,下面同理;
(2) 算術左移(<< ): 符号位不變,低位補0;
(3) 邏輯右移(>>>): 低位溢出,高位補0;注意:邏輯右移(>>>)中的 符号位(最高位)也跟着變;
四. 注意點:
位運算與移位運算,都是使用的二進制的補碼,進行操作的,切忌!
本文是愛站技術頻道小編為大家帶來的詳細介紹Java中的位運算符、移位運算,希望對你有所幫助,也希望大家一如既往的支援愛站技術頻道!