|
Sistemes de numeració.
En C i C++ s'utilitzen bàsicament quatre tipus de sistemes de numeració:
- El sistema binari ( base 2 ).
És el que utilitzen els ordinadors i consta de dos únics símbols. El zero
( 0 ) i l'u ( 1 ).
- El sistema octal ( base 8 ). Aquest sistema utilitza 8 dígits:
0, 1, 2, 3, 4, 5, 6, 7 i 8
- El sistema decimal
( base 10 ). És l'utilitzat per l'ésser humà i consta de 10 dígits:
0, 1, 2, 3, 4, 5, 6, 7, 8 i 9
- El sistema hexadecimal ( base
16 ). Consta de 16 dígits.
0, 1, 2, 3, 4, 5, 6, 7, 8 ,9 ,A, B, C, D, E, F
En aquesta pràctica no entrarem en conceptes i
detalls sobres els sistemes de numeració i la conversió entre bases. Amb la
intenció de coneixer les eines i la sintaxis del llenguatge us proposem aquesta
pràctica que tant sols ens mostra el nombre 217 ( decimal ) en les altres tres
bases que hem comentat. |
|
Desenvolupament de la
pràctica
Obrieu un nou arxiu anomenat m1p03.c En aquest cas escriviu a la finestra de text el
següent codi:
// m3p01.c - nombres en diferents bases
#include <stdio.h>
#include <string.h>
int convertir(char *numero, int base);
int DeCaracterAnombre(char d);
int main()
{
printf(" '331' en octal a decimal és: %d\n",convertir("331",
8));
printf(" 'D9' en hexadecimal a decimal és: %d\n",convertir("D9",
16));
printf(" '10110' en binari a decimal és: %d\n",convertir("11011001",
2));
return 0;
}
int convertir(char *numero, int base)
{
int Multiplicador = 1,Digitn,Valor = 0;
Digitn = strlen(numero)-1;
while(Digitn >= 0)
{
Valor += DeCaracterAnombre(numero[Digitn])*Multiplicador;
Multiplicador *= base;
Digitn--;
}
return Valor;
}
int DeCaracterAnombre(char d)
{
if(d >= '0' && d <= '9') return d-'0';
if(d >= 'a' && d <= 'f') return 10+d-'a';
if(d >= 'A' && d <= 'F') return 10+d-'A';
return -1; // aquest caràcter no és vàlid
}
Captura de l'execució del programa.

|
Explicació del programa
Com podeu comprovar hi ha
conceptes que no hem vist i que veurem més endavant. Només heu de editar el
programa, compilar-lo, executar-lo i veureu com:
'331' en octal correspon al 217
en decimal
'D9' en hexadecimal correspon
al 217 en decimal
'10110' en
binari és el 217 en decimal
|