Dane są dwie liczby binarne. Podaj wynik ich dodawania. Jak to zrobić? C++
Muszę zamienić te liczby binarne na dziesiętne dodać je i zamienić na binarną.

- Rejestracja:prawie 5 lat
- Ostatnio:prawie 2 lata
- Postów:163
Musisz zamienic liczbe na lancuch znakow, potem kazda jedynke z tego lancucha znakow zamienic na 2 do odpowiedniej potegi i dodawac do siebie. W ten sposob dostaniesz liczby w systemie dziesietnym. Dodajesz je, a nastepnie wynik zamieniasz na binarna, dzielac przez 2 i sprawdzajac reszte z dzielenia, jesli 1 to 1, jesli 0 to 0
14 % 2 = 0
7 % 2 = 1
3 % 2 = 1
1 % 2 = 1
14 = 0111
1101 = 2^0 + 2^1 + 0^2 + 2^3 = 11
- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:5
@RezyserKinaAkcji: Tylko co to jest lancuch?

- Rejestracja:prawie 5 lat
- Ostatnio:prawie 2 lata
- Postów:163
tutaj masz wszystko ładnie opisane
http://letmegooglethat.com/?q=c%2B%2B+%C5%82a%C5%84cuch+znak%C3%B3w



- Rejestracja:prawie 12 lat
- Ostatnio:3 dni
- Lokalizacja:Szczecin
W pamięci komputera liczby zawsze są binarne, więc nie chcesz zamieniać ich na dziesiętne ;)
Rozumiem, że chcesz wprowadzić do programu np. 1111
i 1
i uzyskać wynik 10000
.
Najłatwiej to osiągnąć używając std::bitset
: https://en.cppreference.com/w/cpp/utility/bitset
Tak na szybko:
bitset<32> a("1111");
bitset<32> b("1");
cout << bitset<32>(a.to_ulong() + b.to_ulong());

- Rejestracja:ponad 8 lat
- Ostatnio:2 minuty
- Postów:3483
Ja bym spróbował to zrobić bitowo.
Robisz pętlę.
W pętli sprawdzasz co jest na danej pozycji.
Jak jest np. 1 i 0 to suma bitowa tego będzie wartością z bitowego OR czyli:
1&0 =1
Jeśli natomiast wystąpi 1 i 1 to musimy zwrócić 0 i przenieść do pamięci 1.
Tak jakby dodawać te liczby w systemie dwójkowym na kartce.
- Rejestracja:ponad 4 lata
- Ostatnio:około 4 lata
- Postów:5
Chciałam policzyć ilość cyfr w liczbie, stworzyć 2 tablice o długości liczb, zamienić liczby na dziesiętne, dodać je i zamienić wynik na liczbę binarną. Pomoże ktoś?
@jurek1980: Wiem o co chodzi, ale zamieniając liczby na dziesiętne jest chyba łatwiej. (chodzi o to żeby nie było nic z bitami)

- Rejestracja:prawie 5 lat
- Ostatnio:prawie 2 lata
- Postów:163
@Kinga6213: Ja moge Ci napisac jak to zrobic krok po kroku, ale jak to sie robi, musisz sprawdzic sama w internecie, bo inaczej nie bedzie mialo to zadnej wartosci edukacyjnej.
Bierzesz liczbe binarna i zamieniasz na String
Stringa zamieniasz na tablice znaków
Tworzysz pętlę w której iterujesz po elementach tablicy zaczynając od indexu 0. Jeśli w danej pozycji jest 1, to w tym miejscu podnosisz do potęgi 2^index, jeśli 0, to nie robisz nic.
typu
1 = 2 ^ index
0 = 0 ^ index
1 = 2 ^ index
itp itd. Index podnosisz o 1 po kazdej iteracji. Wszystkie wyniki ze soba sumujesz i wychodzi Ci liczba dziesietna
Robisz to samo z druga liczba
Dodajesz obie liczby do siebie
Dzielisz liczbe przez 2 i sprawdzasz reszte z dzielenia. Jesli wynik to 1, to zapisujesz 1, jesli 0, to zapisujesz 0, wyniki łączysz ze sobą tworząc ciąg znaków. W ten sposób z liczby np 15 dostajesz 1111, bo :
15 % 2 = 1
7 % 2 = 1
3 % 2 = 1
1 % 2 = 1
Tadam

- Rejestracja:około 8 lat
- Ostatnio:44 minuty
- Postów:4911
Chciałam policzyć ilość cyfr w liczbie, stworzyć 2 tablice o długości liczb, zamienić liczby na dziesiętne, dodać je i zamienić wynik na liczbę binarną
Po co Ci to skoro musisz zmienić je na dziesiętne, dodać i wrócić do stringa binarnego. Jedynym problemem jest zmiana bin -> dec i dec -> bin; tego znajdziesz pełno w internecie.

- Rejestracja:około 17 lat
- Ostatnio:24 minuty
@Kinga6213:
Chyba już 40 lat nie ma maszyn, które robią obliczenia w systemie dziesiętnym (a o zgrozo był takie i nawet x86 ma rozkazy wspierające taką funkcjonalność - kod BCD).
Jesteś w pułapce umysłowej związanej z faktem, że ludzi się uczy liczyć w systemie dziesiętnym. Komputery obecnie używają do obliczeń tylko i wyłącznie systemu binarnego.
Ergo twój problem sprowadza się do:
- wczytania liczb w zapisie binarnym jako tekst
- Wykonania konwersji tekstu z zapisem binarnym do zmiennej
int
(która używa systemu binarnego) - Dodania
- Wykorzeniania konwersji
int
do tekstu w reprezentacji binarnej - Wypisania tekstu
Liczby dziesiętne nie mają tu nic do rzeczy.


tekstowa reprezentacja liczby binarnej
<-> int
.

- Rejestracja:ponad 19 lat
- Ostatnio:3 miesiące
MarekR22 napisał(a):
Ergo twój problem sprowadza się do: ...
50/50 Może jednak się mylisz, zaś problem sprowadza się do:
- wczytania liczb w zapisie binarnym jako tekst
- zaimplementowaniu oraz uruchomienia algorytmu dodawania (jak na kartce ręcznie).
- wypisania wynikowego tekstu
