Pregunta

Tengo una cola y una serie de colas. buckets es la matriz y collector es la cola. pass es un número entero que guarda de qué pase se trata.Tengo un método que me devuelve los contenidos de la primera celda de la cola llamado peek(). shiftOne() es un método que mueve el principio de una cola al final de otra.

Ahora este código no me funciona

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

He ido paso a paso y resulta que no estoy enmascarando los bits correctamente.Puedo cambiarlos pero eso es todo.Así que intentaré acceder al elemento 102 para una matriz de 10 elementos.¿Qué estoy haciendo mal?Sé peek() y shiftOne() porque puedo ordenar usando potencias y módulos.

¿Fue útil?

Solución

Estás confundiendo radix-10 con radix-2.

El desplazamiento de bits se divide por 2, por ejemplo: 102 >> 1 = 102 / 2 = 51.
Similarmente: 102 >> 8 = 102 / 2^8 = 102 / 256 = 0 (en int términos).

El código (i >> 8) & 0xFF por ejemplo se utiliza para extraer el contenido de el segundo byte de lo dado i valor.

Para su caso, siga con las divisiones por 10 con módulo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top