0

私は小さなプロジェクトに取り組んでいます。Google での検索中に、 java にいくつかのコードが表示されます。

 int red = (pixel >> 16) & 0x000000FF;

しかし、私はそれが何を意味するのか理解していませんか?その論理演算の概要を説明できる人はいますか? そのようにシフトされていると読みましたが、何のシフトですか?

4

3 に答える 3

1

これはビットごとの「AND」演算子です。数値 (16 進数) に適用されるとFF、最後の 8 を除く int のすべてのビットがクリアされます。

ビットごとの「AND」は数値のバイナリ表現を通過し、両方のオペランドが 1 を持つ位置にのみ結果に 1 を入れることを思い出してください。を含む 32 ビット マスクFFはバイナリで次のように見えるため、

00000000000000000000000011111111

結果の上位 3 バイトはゼロになります。すべてが 1 の最後FFのバイトは、最初のオペランドの最後のバイトと等しくなります。

于 2013-11-03T10:52:10.270 に答える
0

& - ビットごとの AND 演算子

>> - 右シフト演算子 - ビット パターンを右にシフトします

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

例えば

バイナリ 100 の 4。>>1 を実行すると 010 になり、2 になります。

バイナリ 1000 の 8。>>1 を実行すると 0100 になり、4 になります。

こちらもご覧ください

ビットごとのシフト (ビットシフト) 演算子とは何ですか? また、どのように機能しますか?

于 2013-11-04T05:34:19.457 に答える