Enrere Mòdul 1
Fonaments de Programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis

 

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