私はこのコードを理解しようとしています。メソッドaddBittoTreeには、ブール値を渡す必要があります。何をチェックしているのかよくわかりません。currentByteと-128にアンパサンドがある理由がわかりませんが、それを加算演算子として使用していますか?
byte currentByte = dis.readByte();
tree.addBitToTree( (currentByte & -128) == -128 );
私はこのコードを理解しようとしています。メソッドaddBittoTreeには、ブール値を渡す必要があります。何をチェックしているのかよくわかりません。currentByteと-128にアンパサンドがある理由がわかりませんが、それを加算演算子として使用していますか?
byte currentByte = dis.readByte();
tree.addBitToTree( (currentByte & -128) == -128 );
-2つのcomplemenetの128は
1000 0000
currentByteに最初のビットが設定されているとしましょう。
1000 0000 // -128
& // bitwise logical and
1010 1010 // currentByte (example)
is
1000 0000 // -128
==
これは( )と比較されるため、パラメータ-128
を渡します。boolean
true
最初のビットが設定されていない別の例:
1000 0000 // -128
& // bitwise logical and
0011 1110 // currentByte (example)
is
0000 0000 // 0
==
これは( )と比較されるため、パラメータ-128
を渡します。boolean
false
この方法は常にtrue
メソッドに渡されるため、最初のビットが設定されfalse
ている場合、および設定されていない場合、すべての正の数に最初のビットが設定されておらず、すべての負の数値に設定されていることがわかっています。単に書くのと同じです:
tree.addBitToTree(currentByte < 0);