Systemów liczbowych jest więcej niż myślisz...
Na co dzień korzystamy z systemu dziesiętnego.
Komputery liczą w binarnym czyli dwójkowym, a zapisują w szesnastkowym czyli hexadecymalnym
(oszczędność miejsca - na 2 bajtach da się zapisać FF w szesnastkowym czyli 255 w dziesiętnym, a nie 99)
Tak naprawdę systemów liczbowych można stworzyć do bólu jednym prostym wzorem,
nawet starożytni korzystali z systemu dwódziestkowego, nie pamiętam kto, ale jakaś starożytna cywilizacja z bliskiego wschodu.
Przejdźmy zatem do konkretów, w tym przypadku napisałem nagłówek do ANSI C, uznałem, że tak będzie wygodniej.
Poniżej kod nagłówka z przykładami wykorzystania:
Plik nazwałem 'numsys.h' dlatego w przykładach taki będzie dołączany do programów:
#define LENGTH 64
void changens(long, int);
void changens(long n, int DESTNUMSYS) {
     long newnum[LENGTH], zerocount = 0;
     for(int i = LENGTH - 1; i >= 0; i--) {
          newnum[i] = n % DESTNUMSYS;
          n /= DESTNUMSYS;
     }
     for(int j = 0; j < LENGTH; j++) {
          if(newnum[j] == 0) zerocount++;
          else break;
     }
     if(DESTNUMSYS == 16) printf("0x");
     for(int k = zerocount; k < LENGTH; k++) {
          if(newnum[k] >= 10) printf("%c", newnum[k] + 55);
          else printf("%d", newnum[k]);
     }
     printf(" (%d)", DESTNUMSYS);
}
Więc tworzymy wyżej opisany plik nagłówkowy numsys.h w celu przetestowania go:
Teraz zrobimy mały test nagłówka numsys.h + dodatkowo pokażę jak go zastosować w inny sposób:
Poniższy kod zamienia podaną liczbę decymalną (dziesiętną) na systemy liczbowe od dwójkowego do dwudziestkowego
Jest również sprawdzenie czy program działa poprawnie bo przez wzór przepuszczona jest także liczba decymalna
Oto drugi sposób zastosowania tego nagłówka, ponieważ przyjmuje on dwa parametry,
drugi parametr pozwala wybrać na jaki system liczbowy zamienić liczbę dziesiętną: