Otros consejos

Para empezar se podría comparar byte por byte (o palabra por palabra), y cuando encuentre una búsqueda diferencia dentro de ese byte (o palabra) para el primer bit de diferencia.

Parece vagamente plausible para mí que la adición de un nodo a una serie de cubos será tan rápido es que importe si lo hace inteligente de bits haciendo girar para encontrar el primer bit de diferencia dentro de un byte (o palabra), o simplemente la rotación en un bucle hasta CHAR_BIT (o algo así). Es posible, sin embargo.

Además, si los identificadores son esencialmente aleatoria con una distribución uniforme, a continuación, se encuentra una diferencia en los primeros 8 bits unos 255/256 del tiempo. Si todo lo que importa es el comportamiento promedio de los casos, no peor de los casos, a continuación, sólo hacer lo estúpida:. Que es muy poco probable que el bucle se ejecutará por mucho tiempo

Para referencia, sin embargo, el primer bit de la diferencia entre los números x y y es el primer conjunto de bits en x ^ y. Si estaba programando en C de GNU, __builtin_clz podría ser su amigo. O posiblemente __builtin_ctz, estoy un poco sueño ...

Sus miradas de código como Java, aunque, por lo que supongo que la bitfoo que estás buscando es registro de número entero .

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