2013-07-14 8 views
5

は、私は約1年のためのJavaでプログラムを実行しますが、それでも私は知らない何かを発見しました。 どうすればいいですか:Java |整数を持つ演算子。

new Font(FontFamily.TIMES_ROMAN, 12, 1 | 4); 

どのように|整数で動作しますか?

P.S.私はたくさんのグーグルグーグルに行った

+4

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html –

+0

1はプロパティでなければなりません。また、4は別のプロパティである必要があります。 –

+0

@huseyintugrulbuyukisik OPは2つのプロパティをどのように組み合わせたかを知りたいです。 – MathSquared

答えて

7

ビット単位でOR演算子であり、は、個々のビットのレベルで1つ以上のビットパターンまたは2進数で動作します。

ビット単位^演算子は排他的論理和演算ビット単位を行います。オペランドのいずれかが両方のオペランドがゼロである場合にのみ1とゼロの場合

ORビット演算は1を返します。

JLS 15.22.1に完全な説明があります。あなたのケースではそのため

0|0 = 0 
0|1 = 1 
1|0 = 1 
1|1 = 1 

、オペランドは14です。バイナリ(最後の4桁)に変換することは、それぞれ01000001となります。ビットによって今ビット|を適用します。

0 1 0 0 
0 0 0 1 
--------- 
0 1 0 1 = (5 in base 10) 
11

|オペレータがそのオペランドの"bit-wise OR"を計算します。それを理解するには、バイナリにオペランドを変換する必要があります:それはどちらかに設定されている場合には、ビットがいずれかの数字に設定されていない場合は「0」ビットを生成し、「1」ビット。あなたの数字で

ので、4|1の結果は5:ビット単位のOR演算子は「ビット単位のAND」場合「0」を生成オペレータ&、に関連している

4 = 100 
    1 = 001 
4|1 = 101 = 5 

ビットのいずれかに設定されていない場合は "1"がセットされます。

これらの演算子は、その引数のビット単位の表現に取り組んでいるので、彼らはあなたが進(ベース10)の数字での作業に使用しているときに理解することは難しいことができます。次の関係は、あなたが他のを持っているとき、1の結果を導出することを容易にされ、保持している:

a + b = (a|b) + (a&b) 
+1

注:これらはバイナリ、8進数、または16進定数を使用すると、人間が理解しやすくなります。例えば0xF124 | 0x0228 = 0xF32C。 – user949300

+0

@ user949300私は定数を '1 << 0'、1 << 1'などと定義する傾向があります。あなたは数学をしていない、ビット配列以外のものを使ってビット配列を反転しているようです不要な認知的オーバーヘッドのようなものです。 – millimoose

1

|は、ビット単位のORと呼ばれています。 10進数に戻って結果を変換する(0は偽であり、1が真)

  • マッチング位置における各桁にブールアウトドア
  • バイナリOR(||)に各番号の変換

    1. :これは、ことによって動作します例えば

    、に

    100 | 4 
    OR 001 | 1 
    -------+-- 
        101 | 5 
    

    特性コンストラクタはバイナリで設計されているため、正確に1桁は1です。これらのORをとることで、ORedされたオプションを表す数字が表示されます。