Maison > Questions et réponses > le corps du texte
String strs = "13634393448";
Bytes.toBytes((short) (strs.hashCode() & 0x7fff));
这里面的 & 0x7fff 是什么意思呢?
巴扎黑2017-04-18 09:45:40
0x07fff=0111111111111111
Que se passera-t-il si vous utilisez cette chose ? Le premier bit est 0 et les autres bits restent inchangés.
Selon le type de données, le bit le plus élevé du type de données signé représente le symbole. Dans ce cas, l'opération ET est utilisée pour obtenir la valeur absolue, c'est-à-dire pour obtenir les 15 bits utiles.
Parfois, la recherche au niveau du bit ou l'opération au niveau du bit est relativement plus rapide.
Il existe une autre situation où il est utilisé pour se montrer.
怪我咯2017-04-18 09:45:40
La valeur de retour de
String.hashCode()
est calculée comme suit : s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Vous avez donné 13634393448, et son résultat hashCode est 1002012672
, qui est 0x3bb98000
.
fait l'opération "0x7fff
et " avec , ce qui signifie prendre les trois derniers chiffres de 0x3bb98000
Le résultat de cette question est naturellement 0
.
PHPz2017-04-18 09:45:40
0x7fff = 0111 1111 1111 1111
& est une opération ET
donc cette opération consiste à prendre les 15 derniers chiffres de la représentation binaire du nombre "13634393448"
巴扎黑2017-04-18 09:45:40
Un seul &
est une opération ET au niveau du bit, deux &
est une opération ET logique