Question

J'ai une file d'attente et et un tableau de files d'attente. buckets est la matrice et collector est la file d'attente. pass est un entier qui enregistre ce qui passe c'est.J'ai une méthode qui me renvoie le contenu de la première cellule de la file d'attente appelée peek(). shiftOne() est une méthode qui se déplace la tête d'une file d'attente à la queue de l'autre.

Maintenant, ce code ne fonctionne pas pour moi

bucket[((collector.peek()>>(pass * 8)) &0xFF)].shiftOne(collector);

J'ai suivi étape par étape et il je ne suis pas le masquage de bits correctement.Je peux bouger mais c'est pas le sujet.Je vais donc essayer d'accéder à l'élément 102 pour un tableau de 10 éléments.Ce que je fais mal?Je sais peek() et shiftOne() parce que je peux trier en utilisant les pouvoirs et le module.

Était-ce utile?

La solution

Vous êtes confus radix-10 avec radix-2.

Le décalage de bits est la division par 2, donc par exemple: 102 >> 1 = 102 / 2 = 51.
De la même façon: 102 >> 8 = 102 / 2^8 = 102 / 256 = 0 (en int les termes).

Le code (i >> 8) & 0xFF par exemple, est utilisé pour extraire le contenu de le deuxième octet de l' i de la valeur.

Pour votre cas - coller avec les divisions par 10 avec le module.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top