Autres conseils

Pour commencer vous pouvez comparer octet par octet (ou mot par mot), et quand vous trouvez une recherche de différence au sein de cet octet (ou mot) pour le premier bit de différence.

Il semble vaguement peu plausible pour moi que l'ajout d'un nœud à un tableau de godets sera si rapide que cela importe si vous faites peu-tripotant intelligent pour trouver le premier bit de différence dans un octet (ou mot), ou tout simplement le taux de désabonnement dans une boucle jusqu'à CHAR_BIT (ou quelque chose). Possible, cependant.

En outre, si les ID sont essentiellement aléatoires avec une distribution uniforme, alors vous trouverez une différence dans les 8 premiers bits sur 255/256 du temps. Si tout ce que vous aimez est un comportement moyen cas, pas le pire des cas, alors faites juste la chose stupide. Il est très peu probable que votre boucle fonctionnera longtemps

Pour référence, cependant, le premier bit de différence entre le nombre x et y est le premier bit dans x ^ y. Si vous programmez en C GNU, __builtin_clz pourrait être votre ami. Ou peut-être __builtin_ctz, je suis un peu endormi ...

Votre code ressemble à Java, bien que, donc je suppose que le bitfoo que vous cherchez est entier log.

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