Witam,
mam za zadanie napisać program, który konwertuje liczbę decymalną na binarną (przy użyciu osobnej funkcji).
Z pomocą przyszedł mi oczywiście internet i uzyskałem taki kod:
#include <stdio.h>
#include <conio.h>
int NaBin(int x){
int n=x,k,c;
for (c = 31; c >= 0; c--)
{
k = n >> c;
if (k & 1)
printf("1");
else
printf("0");
}
printf("\n");
}
int main(){
int a;
printf("Prosze podac liczbe: ");
scanf("%d",&a);
NaBin(a);
getchar();
getchar();
//program do konwersji liczby decymalnej na binarną
}
Problem w zrozumieniu tego przesunięcia bitowego.
Dlaczego 31 (czy dlatego że rozmiar int to 32bity?)
Bardzo potrzebowałbym objaśnienia: "k =n>>c".
Oczywiście cała reszta zrozumiała, tak więc jedyne na czym mi zależy to na przykładzie jak program działa po kolei z tym przesunięciem i dlaczego.
Prosiłbym o bardzo szczegółowe wyjaśnienie, ponieważ muszę dokładnie zrozumieć jak to działa.
Najlepiej zawsze przemawiają do mnie przykłady, typu: 0100 zmienia się na 0010 itp.