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.
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.
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"
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.
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 est0x3bb98000
.fait l'opération "
0x7fff
et " avec , ce qui signifie prendre les trois derniers chiffres de0x3bb98000
Le résultat de cette question est naturellement0
.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"
0x Convertir hexadécimal
Un seul
&
est une opération ET au niveau du bit, deux&
est une opération ET logique