L'ajout de nombres binaires en C++
Comment pourrais-je ajouter deux nombres binaires en C++? Quelle est la logique?
Voici mon effort, mais il ne semble pas être correct:
#include <iostream>
using namespace std;
int main()
{
int a[3];
int b[3];
int carry = 0;
int result[7];
a[0] = 1;
a[1] = 0;
a[2] = 0;
a[3] = 1;
b[0] = 1;
b[1] = 1;
b[2] = 1;
b[3] = 1;
for(int i = 0; i <= 3; i++)
{
if(a[i] + b[i] + carry == 0)
{
result[i] = 0;
carry = 0;
}
if(a[i] + b[i] + carry == 1)
{
result[i] = 0;
carry = 0;
}
if(a[i] + b[i] + carry == 2)
{
result[i] = 0;
carry = 1;
}
if(a[i] + b[i] + carry > 2)
{
result[i] = 1;
carry = 1;
}
}
for(int j = 0; j <= 7; j++)
{
cout<<result[j]<<" ";
}
system("pause");
}
qui de l'enfer :p je n'ai pas
Je suppose que vous ne vivez pas dans un pays anglophone. C'est un idiome: thefreedictionary.com/for+la+l'enfer+de+
où est-ce que ça va mal pour vous ?
apprécié votre effort, mais je suis ici pour faire mon bits forte pas les expressions idiomatiques :p pour l'enfer de celui-ci 🙂
"Il ne me semble pas correct", ce n'est pas beaucoup d'aide sans une description de ce résultat que vous attendez et ce que vous êtes réellement.
Je suppose que vous ne vivez pas dans un pays anglophone. C'est un idiome: thefreedictionary.com/for+la+l'enfer+de+
où est-ce que ça va mal pour vous ?
apprécié votre effort, mais je suis ici pour faire mon bits forte pas les expressions idiomatiques :p pour l'enfer de celui-ci 🙂
"Il ne me semble pas correct", ce n'est pas beaucoup d'aide sans une description de ce résultat que vous attendez et ce que vous êtes réellement.
OriginalL'auteur Muhammad Arslan Jamshaid | 2012-11-08
Vous devez vous connecter pour publier un commentaire.
Bien, il est assez trivial de problème.
Pour l'ajout de deux nombres binaires a et b. Vous pouvez utiliser les formules suivantes pour le faire.
C'est l'équation d'une Demi-Additionneur.
Maintenant à le mettre en œuvre, vous pouvez avoir besoin de comprendre comment un Plein Additionneur œuvres.
Puisque vous stockez vos nombres binaires en int tableau, vous pouvez comprendre opération au niveau du bit.
Vous pouvez utiliser ^ pour XOR,| à l'exploitant OU, & opérateur pour ET.
Voici un exemple de code pour calculer la somme.
OriginalL'auteur krammer
Puisque vous posiez des questions sur C++, vous méritez un C++ réponse. Utilisation bitsets:
Cela fonctionne pour arbitrairement long ensembles de bits.
Le
m
est un masque pour extraire le bit de poids faible d'un bitset. Par exemple,("uvwxyz" >> 2)&"1"
->"x"
.OriginalL'auteur bitmask
Il y a un bug :
Aussi peut-être u souhaitez imprimer dans le sens inverse
quel est le but btw? il pourrait être plus facile à convertir en décimal -> add -> convertir en binaire,
oui, il peut être, mais quel est l'algo de conversion de binaire en décimal ?
Le binaire b à la position n, le plus à droite peu a la position 1 a une valeur décimale de b*2^(n-1). Essayez d'appliquer cette logique à certains petits nombres binaires. Par exemple, essayez de l'utiliser pour convertir les numéros de 1011 et 110 à la décimale. Vous devriez obtenir 11 et 6, respectivement.
pour la conversion de binaire à décimal, vous pouvez suivre:wikihow.com/Convert-from-Binary-to-Decimal.
OriginalL'auteur Karthik T
Vous pourriez utiliser "OU Binaire" pour réduire le code depuis
Vous pouvez également convertir le nombre décimal somme et de revenir à la binaire à nouveau.
La conversion de décimal à binaire
OriginalL'auteur dreamcrash
Vos tableaux sont un élément trop petit pour votre indexation.
int a[3]
a seulement 3 éléments, de sorte quea[3] = 1
est pas valide (il a comportement indéfini) puisqu'il accède à la 4ème élément, qui n'existe pas.De même pour les autres tableaux.
Qui signifie que l'ensemble du programme a un comportement indéterminé, c'est à dire qu'il peut faire quelque chose ou rien du tout.
(Ce qui est probablement votre cas c'est que l'écriture en dehors de l'tableaux est d'écraser les autres variables.)
Vous n'êtes pas initialisation de la
result
tableau, de sorte que son contenu est juste des données aléatoires.Puisque vous n'mise à jour 4 de ses éléments, mais l'impression de tous d'entre eux (et plus), la sortie sera aléatoire des données.
OriginalL'auteur molbdnilo
Suivantes ont été les erreurs dans votre code et code fixe est également en-dessous de"
ici est le morceau de code:
OriginalL'auteur Aadil Imran
OriginalL'auteur Manglesh Pareek
À plusieurs reprises ne
jusqu'à ce que x est de 0. y est la réponse.
OriginalL'auteur user515430
ce faire, vous devez
OriginalL'auteur bingchuan zhang
Une non-solution classique, mais ça fonctionne:
OriginalL'auteur fedemengo
Que si leurs tailles ne sont pas les mêmes? Aussi, vous souhaitez permettre à l'utilisateur d'entrer les nombres binaires (dans ce cas représentant des entiers) que des entiers, et non pas comme des éléments de tableaux. Voici un morceau de code qui accomplit ceux-ci: -)
OriginalL'auteur Mattlab
Une manière simple :
OriginalL'auteur rashedcs