Ajouter deux nombres entiers en utilisant seulement les opérateurs au niveau du bit?
En C#, il est possible d'effectuer la somme de deux nombres entiers de 32 bits sans utiliser des choses comme if..else, boucles etc?
Qui est, peut-il être fait en utilisant uniquement les opérations bit à bit OU (|
), ET (&
), XOR (^
), PAS (!
), maj gauche (<<
) et décalage à droite (>>
)?
- Par curiosité, pourquoi voulez-vous faire une telle chose?
- Université d'affectation?
- Selon lui, il veut juste comprendre la logique derrière l'ajout de nombres binaires.
- Rien de spécial, juste pour le savoir. Je ne suis pas dans l'université 🙁
- si vous êtes intéressés par ce genre de chose, découvrez un livre qui s'appelle Hacker Plaisir
- Assurez-vous que vous avez lu Structuré Organisation de l'Ordinateur de Tanenbaum. C'est un putain de bon livre qui commence avec beaucoup de bas niveau, des trucs comme ça et va jusqu'à la pile par la suite.
- C'est une grande question pour informatique quantique.
Vous devez vous connecter pour publier un commentaire.
Voici un exemple pour votre amusement
La boucle peut être déroulé. Nombre de fois qu'il exécute, dépend du nombre de bits définis dans opérandes, mais il n'est jamais plus grande que la largeur de
unsigned int
. Une foiscarry
devient0
, prochaines itérations de ne pas changer quoi que ce soit.Essayez ceci:
Edit:
Corrigé
if
déclarationRéfléchir à comment l'ajout arrive peu à peu. Maj les valeurs pour chaque bit de chaque opérande à son tour, puis regarder les quatre valeurs possibles pour les deux bits et de calculer le résultat de bits doit être et si il y a un bit de retenue à s'inquiéter. Puis voir comment le résultat et peut transporter caculated à l'aide de la bit-à-bit de la fpo.
Prenant 32 bits int 32 bits. Merci!!!
i++
est que pas plus? 😉De la somme de deux bits peuvent être effectuées à l'aide de la XOR
^
opérateur et bit de retenue peuvent être obtenus par l'utilisation ET la&
de l'opérateur.Fourni
a
etb
n'ont pas de définir les bits à la même position, puis à l'aide^
opérateur donne la somme dea
etb
.Commentaires de geeksforgeeks