String strs = "13634393448";Bytes.toBytes((short) (strs.hashCode() & 0x7fff));
这里面的 & 0x7fff 是什么意思呢?
学习是最好的投资!
0x07fff=0111111111111111これを操作するとどうなるでしょうか?最初のビットは 0 で、他のビットは変更されません。
データ型に応じて、符号付きデータ型の上位ビットがシンボルを表します。この場合、絶対値、つまり有効な 15 ビットを取得するために AND 演算が使用されます。
ビット単位の検索またはビット単位の演算の方が比較的高速な場合があります。
誇示するために使用される別の状況もあります。
String.hashCode() の戻り値は次のように計算されます: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]13634393448 が与えられ、そのハッシュコードの結果は 1002012672、つまり 0x3bb98000 です。 は、0x7fff を使用して「 と 」の演算を実行します。これは、0x3bb98000 の最後の 3 桁を取得することを意味します。この質問の結果は当然 0 になります。
String.hashCode()
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
1002012672
0x3bb98000
0x7fff
0
0x7fff = 0111 1111 1111 1111& は AND 演算 であるため、この演算は数値「13634393448」のバイナリ表現の最後の 15 桁を取得します
0x 16 進数を変換
1 つの & はビット単位の AND 演算、2 つの & は論理 AND
&
0x07fff=0111111111111111
これを操作するとどうなるでしょうか?最初のビットは 0 で、他のビットは変更されません。
データ型に応じて、符号付きデータ型の上位ビットがシンボルを表します。この場合、絶対値、つまり有効な 15 ビットを取得するために AND 演算が使用されます。
ビット単位の検索またはビット単位の演算の方が比較的高速な場合があります。
誇示するために使用される別の状況もあります。
String.hashCode()
の戻り値は次のように計算されます:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
13634393448 が与えられ、そのハッシュコードの結果は
1002012672
、つまり0x3bb98000
です。は、
0x7fff
を使用して「 と 」の演算を実行します。これは、0x3bb98000
の最後の 3 桁を取得することを意味します。この質問の結果は当然0
になります。0x7fff = 0111 1111 1111 1111
& は AND 演算
であるため、この演算は数値「13634393448」のバイナリ表現の最後の 15 桁を取得します
0x 16 進数を変換
1 つの
&
はビット単位の AND 演算、2 つの&
は論理 AND