java - & 0x7fff 是什么意思呢?
PHPz
PHPz 2017-04-18 09:43:40
0
5
1159

String strs = "13634393448";
Bytes.toBytes((short) (strs.hashCode() & 0x7fff));

这里面的 & 0x7fff 是什么意思呢?

PHPz
PHPz

学习是最好的投资!

全員に返信(5)
巴扎黑

0x07fff=0111111111111111
これを操作するとどうなるでしょうか?最初のビットは 0 で、他のビットは変更されません。

データ型に応じて、符号付きデータ型の上位ビットがシンボルを表します。この場合、絶対値、つまり有効な 15 ビットを取得するために AND 演算が使用されます。

ビット単位の検索またはビット単位の演算の方が比較的高速な場合があります。

誇示するために使用される別の状況もあります。

いいねを押す +0
刘奇

String.hashCode() の戻り値は次のように計算されます: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
13634393448 が与えられ、そのハッシュコードの結果は 1002012672、つまり 0x3bb98000 です。
は、0x7fff を使用して「」の演算を実行します。これは、0x3bb98000 の最後の 3 桁を取得することを意味します。この質問の結果は当然 0 になります。

いいねを押す +0
PHPzhong

0x7fff = 0111 1111 1111 1111
& は AND 演算
であるため、この演算は数値「13634393448」のバイナリ表現の最後の 15 桁を取得します

いいねを押す +0
伊谢尔伦

0x 16 進数を変換

いいねを押す +0
巴扎黑

1 つの & はビット単位の AND 演算、2 つの & は論理 AND

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート