只有整型數才能作位運算 (<< 相當於乘2 >>相當於除2)
如:double a=5;
a=a<<3;//error 必須是整型數才可以位運算
system.out.println(a);
運算子:
x++:先運算,後自增
++x:先自增,後運算
&&:短路與,當前乙個條件為false時,後乙個條件不運算
&:按位與,當前乙個條件為false時,後乙個條件也要判斷
||:短路或,當前乙個條件為true時,後乙個條件不運算
|:按位或,當前乙個條件為true時,後乙個條件也要判斷
>>:往右移若干位,左邊補符號位
>>>:往右移若干位,左邊補0,用於位圖移動,不用於數字運算
負數的位運算:(根據補碼進行位運算)
如:int a=-33;//-33原碼:1....0010 0001 補碼:1...1101 1111
a=a>>2;//1...1101 1111右移2位變成1....1111 0111 原碼:1...0000 1001
system.out.println(a);//-9
取反:int a=~10;//根據補碼 10補碼:00... 0000 1010 ~10:11... 1111 0101 ->原碼:10...0000 1011
system.out.println(a);//-11
異或:兩個相同的整數異或結果為0。任意整數與0異或,結果都為本身
如:不使用第三個變數,使a和b中的值交換
int a=10,b=5;
a=a^b;
b=b^a;//b^(a^b)=a^(b^b)=a
a=a^b;//(a^b)^(a^(a^b))=(a^b)^a=b;
數**算符的優先順序高於位運算
如:int a=10;
a+=a-=a*=a;
system.out.println(a);//-80
a*=a ->a1=a*a=100;
a-=a ->a2=a-a1=-90;
a+=a ->a3=a+a2=-80;
條件運算:冒號兩邊的資料型別要一致,否則低精度自動向高精度轉換
如:double x=3.0;
int y=5;
system.out.println(x>y?x:y);
java邏輯操作 條件操作 位運算
一 邏輯操作 與 或 非 非 a a10 01 與 aba b11 1100 0100 00 或 aba b11 1101 0110 00 二 條件運算 非關係表 a a true false false true 與 aba b false false false true false false...
(基礎)java中的位運算
位運算效率最高!異或 小應用 資料加密解密 乙個數異或另乙個數兩次,則還原 a b b a a b 加密 c b a 解密 左移 左移n位等效於 乘以2的n次冪 3 2 3 2 2 右移 右移一位等效於 除以2,8 2 8 2 2 被移動的高位用原來的高位來補,原來是0就用0補,是1就用1補,保證符...
基礎演算法 位運算 基本運算
1.移動 左移n位 乘以2的n次方 右移n位 除以2的n次方 0 左移n位 在1後面加上n個0 注 0不等於1。等於11 11 x 0 正數左移右邊補0 正數右移左邊補0 負數左移右邊補1 負數右移左邊補1 移動的作用總結 乘2,除2。右n位清零 2.異或 x 0 x x x 0 x 1 x x x...