私はGoogleで苦労している絶対に基本的なJavaの質問です。どのような以下の意味がある:Javaでのロジックの表記
7 == 0 || 8 == 0?
私はこれをテストしている主な迅速を書いた、そしてケースのようです:
(7 & 8) == 0?
は書き込みと同等ということです。私は何かを欠けていないことを確認したかっただけです。
私はGoogleで苦労している絶対に基本的なJavaの質問です。どのような以下の意味がある:Javaでのロジックの表記
7 == 0 || 8 == 0?
私はこれをテストしている主な迅速を書いた、そしてケースのようです:
(7 & 8) == 0?
は書き込みと同等ということです。私は何かを欠けていないことを確認したかっただけです。
いいえ。 &
はbitwise andです。対応するビットが両方の入力に設定されている場合は、ビットを設定します。バイナリでは7が111
であり、8が1000
であるため、ビットは共通ではないため、結果は0
です。
実際には1行ではなく、提案するための略式構文はありません。 Set
またはBitSet
のメンバーシップのテストには、switch
ステートメントを使用してください。効率的で短くても7 == 0 || 8 == 0
のようなものはありません。
これは7と8と比較しているため、他のケースでは保証されていないため、ビット比較です。整数の両方のビットが一致すると、結果は「0」ではなく「1」となります。
&
はビット単位のAND演算子です。これはAND演算は8と7を表すビットであることを意味します
7
- >0111
8
- >1000
明らかに0
このwikipedia articleはとよくそれを説明し、その結果
あなたの正確な例と他のビットワイズ演算子について説明します。
&
はビット単位でANDです。入力の2つのビットを考えると、次のようにビット単位でビット出力を提供し、この場合には
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
、
7 in binary is 00000111
8 in binary is 00001000
--------
00000000, which is 0 in decimal.
あなたは26の代わりに、8
7 in binary is 00000111
26 in binary is 00011010
--------
00000010, which is 2 in decimal.
ビット単位を持っていたと言います演算は、数値にパックされたフィールドを抽出して操作するために使用されます。
たとえば、3つのフィールドが1つの数字にパックされていて、それぞれ4ビットのうちの2つ(0..15)、1と3ビット(0..7)があるとします。
// n = aaaabbbbccc
// Unpack the fields:
a = (n >> 7) & 0xF;
b = (n >> 3) & 0xF;
c = (n >> 0) & 0x7;
// Pack the fields:
n = (a << 7)
| (b << 3)
| (c << 0);
&述べたように、ビット比較であるが、ショートとして働くことができる「と」たとえば、
if((x == 3) && (y = 3/0)){
は常にエラーをスローします。xが等しい3、javaはFalseを&何がFalseになりますので、表現の残りの部分を評価する気にしないだろうしない場合、xが3に等しい場合は、
if((x == 3) & (y = 3/0)){
はエラーをスローします。