C/Przykłady z komentarzem: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
GDR! (dyskusja | edycje)
GDR! (dyskusja | edycje)
Wersja polegająca na tym że rozmiar short int to zawsze 16 bitów była niedopuszczalna
Linia 57:
 
=== Zamiana liczb dziesiętnych na liczby w systemie dwójkowym ===
Zajmijmy się teraz innym zagadnieniem. Wiemy, że komputer zapisuje wszystkie liczby w postaci binarnej (czyli za pomocą jedynek i zer). Spróbujmy zatem zamienić liczbę, zapisaną w "naszym" dziesiątkowym systemie na zapis binarny. '''Uwaga!:''' Program będzie działa poprawniejedynie dla liczb w zakresie od 0 do 65535maksymalnej wartości którą może przyjąć typ (2<supcode>16unsigned short int</supcode> - 1), jednak radzę popróbować zw innymitwoim liczbamikompilatorze.
 
<pre>
#include <stdio.h>
Linia 64 ⟶ 63:
void dectobin (unsigned short a)
{
int licznik; = 15;
/* 8 to ilość bitów w bajcie */
for (;licznik>=0;licznik--) {
int licznik = 8 * sizeof(a) - 1;
if ((a>>licznik)&1) printf ("1");
while(--licznik >= 0)
else printf ("0");
{
if ((a >> licznik) &1) printf ("1");
printf ("1");
else
else printf ("0");
}
}
Linia 73 ⟶ 78:
int main ()
{
unsigned short a; /* 16-bitowa zmienna */
 
printf ("Podaj liczbę: ");
Linia 80 ⟶ 85:
dectobin(a);
printf ("\n");
 
return 0;
}
 
</pre>
 
Funkcję <code>dectobin()</code> można zmodyfikować tak, aby działała na zmiennych całkowitych o dowolnej długości poprzez zmianę typu danych <code>unsigned short</code> na inny oraz zamianę linii
 
int licznik = 15;
 
na
 
int licznik = 8 * sizeof(a) - 1;