hej ,w racji ćwiczeń w padłem na pomysł by stworzyć w C++ program sumujący liczby w systemie binarnym .
na początku szło mi dość dobrze jednak niezależnie jakie dane się wprowadzi to wynik wynosi 0 (oczywiście w systemie binarnym) Program pisałem całkowicie sam i też nie jestem do końca pewny czy ten algorytm ma jakiś sens ): Wiem że kod może być mało czytelny ale starałem się go dokładnie opisać , ale ktoś kto zna zasadę działania sumatora binarnego to powinien zrozumieć (oczywiście algorytm postępowania nie jest taki sam jak w ALU). Będę bardzo wdzięczny jak ktoś poświęci czas i mi pomoże (:
Pozdrawiam i dziękuje za wszelkie komentarze ...
#include <iostream>
#include <cstdlib>
using namespace std;
char AC[4]; //liczby binarne zaimplementowane w typie char by dalo sie je zapisac bez uzycia spacji
char BC[5];
int A[4]; //pierwsza liczba binarna
int B[5]; //druga liczba binarna
int C[5]; //przeniesienie logiczne
int S[5]; //suma logiczna //o jeden bit więcej by nie doszło do przepełniena
int bufor;
int main()
{
cout<<"pierwsza liczba : ";
cin>>AC[0]>>AC[1]>>AC[2]>>AC[3]; //wprowadzamy liczby w formacie char
cout<<"druga liczba : ";
cin>>BC[0]>>BC[1]>>BC[2]>>BC[3];
for(int i=0; i<4; i++) //konwersia na int
{
A[i]=atoi(AC);
B[i]=atoi(BC);
}
for(int i=0; i<4; i++) //funkcia dodajaca zera i jedynki (a+b+c) i dajaca wynik w systemie dziesietnym konwertowanym na sume logiczna i przeniesienie logiczne
{
bufor = C[i]+A[i]+B[i]; //wynik tymczasowo w buforze
if(bufor==0) //instrukcia logiczna odpowiadajaca za sume i przeniesienie bitowe
{
S[i]=0;
C[i+1]==0;
}
if(bufor==1)
{
S[i]=1;
C[i+1]==0;
}
if(bufor==2)
{
S[i]=0;
C[i+1]==1;
}
if(bufor==3)
{
S[i]=1;
C[i+1]==1;
}
}
S[4]=C[4]; //na koniec zostaje tylko ewentualne przeniesienie (do wyniku dodajemy ostatnie C)
cout<<endl;
cout<<S[0]<<S[1]<<S[2]<<S[3]<<S[4]<<endl; //wyswietlanie wyniku dodawania
return 0;
}