java基礎 位運算,條件運算

2021-08-16 06:07:22 字數 1176 閱讀 2162

只有整型數才能作位運算 (<< 相當於乘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...