1.(^) 排他的論理和演算子
運用ルール:2つのオペランドは、ビットのXOR演算を。【同じかかり0、逆がかかり1] 。すなわち、二つのオペランドは、同じ互いに打ち消し合います。
ヒント:
(1)価値交換。INT A = 10; int型、B = 20 ===> A ^ B ^ == B、^ B ^ B == A
1 INT F = 50 ; 2 INT G = 60 ; 3 4。 F = F ^ G、 5 G = F ^ G; 6 F = F ^ G、 7のSystem.out.println(F + "" + G); 8 9。 出力は次のとおりです。6050
(2)対称オフセット伝達。例えば:INT A = 10、INT B = 20、INT C = 30、D = INT 40 ===> A ^ B ^ C ^ D ^ == B ^ C ^ D ^ B ^ C ^ D。 ^^ B == C ^ D ^ B ^ C ^ D ^ A ^ B ^ C ^ D = 0。
性質が奇数の配列内の値のペアを見つけることである2を使用することができます。
1 公共 静的 ボイドメイン(文字列[]引数){ 2 3。 int型の配列[] = {2,3,4,4,3,5,5,6,6,7,7 }; 4 5。 INT A = 0 。 6 7。 ため(INT I = 0;私は<Array.lengthとすること; I ++ ){ 8。 9。 V ^ = ;配列[I]が 10 11 } 12は 13である のSystem.out.println( "同じではない数:" + V ); 14 15 }
2.( &)ビットAND演算子
動作ルール:0 0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1、すなわち:[ 同時に2つが"1"であり、結果は"1"で、それ以外は0 ]。もう一つ:否定的な報道の補数形式は、ビット単位のAND演算に参加します。
ヒント:
(1)クリア。あなたはそのすべてのバイナリビットが0の場合でも、ユニットをクリアしたい場合は、限り、あなたはゼロである位相値として、結果はゼロです。
1つの 公共 静的 ボイドメイン(文字列[]引数){ 2 INT A = 50 。 3 INT B = 60 。 4 のSystem.out.println(A&B&0)。// 输出0; 5 }
(2)指定されたビット数を取り
方法:フェッチする数、Xの対応するビットを見つけ、対応するビットの数が1で、残りのビットはゼロであり、この数Xは、「操作」は、Xのビットを指定することが可能です
例:レッツX = 10101110、
X&= 0000 1110 0000 1111との下位4ビットのうちXを得ることができます。
Xはまた、2,4,6ポジションを取るために使用することができます。
1つの 公共 静的 ボイドメイン(文字列[]引数){ 2 INT A = 50 。 3 バイト ABIT =(バイト)。// 00110010 4 バイト lastTwo =(バイト)3。// 00000011 5 バイト lastFive =(バイト)31。// 00011111 6 バイト結果2 =(バイト)(ABIT&lastTwo)。 7 バイト result5 =(バイト)(ABIT&lastFive)。 8 9 System.out.println(Byte.toString(結果2)); // テイク2 50、出力--- 2の後に 10 のSystem.out.println(Byte.toString(result5)); // 後に取っ5~50ビット--- 18を出力する 。11 }
3. ( | )ビット単位のOR演算子
動作ルール:0 | 0 = 0; 0 | = 1; 1 | 0 = 1; 1 | = 1; すなわち:2つのオブジェクトが操作に関与長い1、1の値がある限り。また、否定的な報道の補数形式は、ビット単位のORに参加します。
ヒント:特定の場所のためのデータ1
例えば:1 Xのセットに対応する番号を見つけ、対応するビットの数が1で、残りのビットはゼロです。この数は、特定の位置でX又はX 1を可能にします。
例:4 XとX = 10100000 1の低い位置| = 1010 1111 0000 1111を得ることができます。
4. ( - )非オペレータ
動作ルール:否定演算子NOT演算である、バイナリ1つの1 0,0変異体の変化
後それは001010 1010 110101非動作である
非動作となるINT X - (X + 1)、すなわち、= -6〜5、〜(-5)= 4
5.(<<)の左シフト演算子
動作ルール:のオペランドのすべてのビットの各ビット数を左(バイナリ桁が、左右補体0を破棄しました)。
例:<< 2の2ビット、右0を左=
A = * 2を去った後。
左がハイレベル、それぞれ左の1が含まれていない廃棄された場合は、同等の数は2倍。
6.(>>)の右シフト演算子
右側のビット数の数の各々の全てのビットは、左補体正数0、1つの負左右廃棄埋めます。
オペランドすべての右シフト、2で割った数に相当。
例えば:右に2ビットのA = A >> 2 A、
見て左塗りつぶし0または1つのアップシフトの数が正または負です。
7.(>>>)の符号なし右シフト演算子
>>>演算子式2式1ビットで指定された各ビットに権利。右の空いたビット位置に残された後、ゼロで満たされています。右アウト・ビットは破棄されます。
たとえば、次のようにするvar温度= -14 >>> 2
変数TEMPは、14(すなわち、バイナリ1,111,111,111,111,111 1,111,111,111,110,010)が右1073741820(すなわちバイナリ0,011,111,111,111,111 1,111,111,111,111,100)が2に等しいです。