dec2bin - dlaczego to działa?

0
 
#include <iostream>
using namespace std;

void dec_to_bin(int liczba)
{
	int i = 0, tab[31];

	while (liczba) //dopóki liczba będzie różna od zera
	{
		tab[i++] = liczba % 2;
		liczba /= 2;
	}

	for (int j = i - 1; j >= 0; j--)
		cout << tab[j];
}

int main()
{
	int liczba;

	cout << "Podaj liczbe: ";
	cin >> liczba;
	cin.get();
	cout << liczba << " po zamianie na postac binarna: "; dec_to_bin(liczba); cout << endl;

	cin.get();
	return 0;
}

Może mi ktoś wytłumaczyć jak to działa? Dokładnie interesuje mnie dlaczego pod funkcją została zrobiona tablica i jak w pętli to się samo liczy.

0

Nic się samo nie liczy :-P
W jaki sposób zamieniłbyś liczbę 1234 pisemnie, na kartce na system binarny?

0

1234 : 2 = 617 R 0
617 : 2 = 308 R 1
308 : 2 = 154 R 0
154 : 2 = 77 R 0
77 : 2 = 38 R 1
38 : 2 = 19 R 0
19 : 2 = 9 R 1
9 : 2 = 4 R 1
4 : 2 = 2 R 0
2 : 2 = 1 R 0
1 : 2 = 0 R 1

10011010010

0

Zatem dzielisz przez 2, spisujesz resztę z dzielenia (modulo) i ostatecznie czytasz liczbę od końca - dokładnie to samo, co robi ta Twoja funkcja.

1

void dec_to_bin(int liczba)

Zwracam uwagę, że funkcja nie robi żadnego dec to bin, tylko przyjmuje parametr binarny i wypisuje (próbuje go wypisać) na ekranie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1