J'ai implémenté le code here en C# pour obtenir le MSB d'un int. Je ne suis pas certain de ce que je dois faire avec la table de référence du journal et le code principal pour étendre le code à 64 bits. La seule chose que le texte dit est qu'il faudra 2 opérations CPU de plus, donc je déduis que le changement est mineur.Extension du bidouillage de bits pour Log_2 à 64 bits
0
A
Répondre
1
La table n'a pas besoin d'être modifiée. Un niveau supplémentaire de if()
est nécessaire:
if (ttt = v >> 32)
{
if (tt = ttt >> 16)
r = (t = tt >> 8) ? 56 + LogTable256[t] : 48 + LogTable256[tt]
else
r = (t = ttt >> 8) ? 40 + LogTable256[t] : 32 + LogTable256[ttt]
}
else
{
if (tt = v >> 16)
r = (t = tt >> 8) ? 24 + LogTable256[t] : 16 + LogTable256[tt];
else
r = (t = v >> 8) ? 8 + LogTable256[t] : LogTable256[v];
}
+0
Parfait! Merci. – IamIC
Questions connexes
- 1. Interopérabilité 32 bits et 64 bits sur Windows 64 bits
- 2. Démarrage du processus 64 bits au cours de l'installation 32 bits pour modifier 32 bits et 64 bits .NET machine.config
- 3. Pilote sur 64 bits
- 4. Bits C++ en entier de 64 bits
- 5. Cadre personnalisé 32 bits vs 64 bits
- 6. Conditions de lancement pour garantir l'utilisation du programme d'installation 64 bits sur le système 64 bits
- 7. Appel code 32 bits à partir de 64 bits Processus
- 8. Erreur d'exécution binaire 64 bits sur les Centos 64 bits
- 9. CPU/OS 32 bits et 64 bits
- 10. LeakDiag pour Windows 64 bits?
- 11. Xcode & 64 bits & 32 bits Question
- 12. Quantlib 64 bits pour C#?
- 13. Conversion du code Nasm Fibonacci 32 bits en 64 bits
- 14. Détection du mode 32 bits sur IIS 64 bits
- 15. Migration de 32 bits [Delphi 7] à 64 bits
- 16. Passage du pointeur 32 bits au contrôle COM 64 bits
- 17. Assemblage 16 bits sur Windows 64 bits?
- 18. JMagick.dll pour processeur 64 bits
- 19. Accès aux applications 32 bits du registre 64 bits
- 20. Comment puis-je accéder à une DLL 64 bits à partir d'une application 32 bits s'exécutant sous Windows 64 bits?
- 21. Application 64 bits démarrage processus 32 bits
- 22. Déplacement d'une application de 32 bits à 64 bits
- 23. une dll 64 bits avec 64 bits JDK 1.7.0
- 24. Processus 64 bits OS/32 bits
- 25. L'iPhone OS 64 bits ou 32 bits?
- 26. À propos de Mac OS 64 bits et 32 bits
- 27. Mise à niveau 64 bits
- 28. Porteur Windows 32 bits à 64 bits Windows
- 29. va_args et 64 bits
- 30. directive C# pour indiquer 32 bits ou 64 bits construire
Il est étiqueté C, mais vous utilisez C#? – hirschhornsalz
Le code source est C. Je vais convertir en C#. Je ne demande pas à quelqu'un de faire ça pour moi ... juste comment implémenter le C en 64 bits (en C). – IamIC
En supposant que vous êtes sur une sorte d'architecture x86, j'utiliserais simplement l'instruction bsr. En gcc, il est disponible en tant que __builtin_clzll(). Cela calcule le logarithme avec une instruction ... Malheureusement, je ne sais pas comment vous pourriez le traduire en C#. – hirschhornsalz