Wyświetlenie rozwinięcia binarnego

0

Cześć, w jaki sposób mogę odwrócić kolejność wyświetlania reszt z dzielenia, aby wskazywały one na rozwinięcie binarne podanej liczby?

Mój kod co wyświetla reszty z dzielenia:

for(liczba;liczba>=1;liczba=liczba/2)
{
    r=liczba%2;
printf("%d ",r);
}

Na razie mam pustkę w głowie, próbowałem stworzyć kolejną pętlę, która by odwracała kolejność wyświetlania tych reszt, ale mi nie wychodzi. Rzuci ktoś jakąś podpowiedzią?
Z góry dzięki :)

0

Zapisz liczby do tablicy (i to ją wyświetl od końca) albo wykorzystaj rekurencję.

1

To zostaje Ci, najczytelniej, rekurencja:

void printBinaryDigits(int n) {
	if (n > 0) {
		printBinaryDigits(n / 2);
		printf("%d ", n % 2);
	}
}

void printBDigits(int n) {
	if (n == 0) {
		printf("%d", 0);
		return;
	}
	printBinaryDigits(n);
}

int main(){
	printBDigits(0); // -> 0
        printBDigits(10); // -> 1 0 1 0
	printf("\n");
	return 0;
}

EDIT: Zgodnie z sugestą @Bartłomiej Golenko dodany wrapper, rozwiązujący n = 0.

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