2017-05-14 10 views
-17
unsigned int PointSet[] = { (10<<16) | 3, (4<<16) | 2, 0xFFFF0002 }; 

これはどういう意味ですか?この配列は何を意味しますか?

| 3どのような操作ですか?

+2

'です|'ビット単位のORです。 '| 3 'は最後の2ビットを1にセットする。 – Cornstalks

+0

*ビット単位のOR * –

+0

この配列は、ビット単位の演算子を使用してコンパイル時に計算される定数で初期化されます。 '|'はビットごとに 'OR'、' << 'はビットシフト、' 0x'は16進整数リテラルの接頭辞です。 – dasblinkenlight

答えて

1

これは、3つの整数の配列を作成します。カンマは、定数値式を区切ります。 |ビットごとのOR演算子です。

(10<<16)|3 = (0xA<<16)|3 = (0x000A0000)|0x3 = 0x000A0003 
(4<<16)|2 = (0x00040000)|0x2 = 0x00040002 

あなたの配列は{0x000A0003、0x00040002、0xFFFF0002}

+0

ありがとうございました:) –

0
unsigned int PointSet[] = { (10<<16) | 3, (4<<16) | 2, 0xFFFF0002 }; 
     10 = 0000 0000 0000 0000 0000 0000 0000 1010 (Binary) 
0x0000000A = 0 0 0 0 0 0 0 A 
       0000 0000 0000 1010 0000 0000 0000 0000 (16 bit shift) 
0x000A0000 = 0 0 0 A 0 0 0 0 
     3 = 0000 0000 0000 0000 0000 0000 0000 0011 
0x000A0003 = 0000 0000 0000 1010 0000 0000 0000 0011 (... | 3) 

0x00000004 = 0000 0000 0000 0000 0000 0000 0000 0100 
0x00040000 = 0000 0000 0000 0100 0000 0000 0000 0000 (16 bit shift) 
0x00000002 = 0000 0000 0000 0000 0000 0000 0000 0010 
0x00040002 = 0000 0000 0000 0100 0000 0000 0000 0010 (... | 2) 

unsigned int PointSet[] = {0x000A0003, 0x00040002,0xFFFF0002}; 
関連する問題