next up previous contents index
suivant: Un exercice et sa monter: Numération avec Xcas précédent: La base b est   Table des matières   Index

Passage de l'écriture en base b de n à l'entier n

Il faut convertir ici chaque caractère en sa valeur (on convertit le caractère contenu dans m en le nombre nm).
Si m = (c0, c1, c2, c3) alors n = c0*b3 + c1*b2 + c2*b + c3.
On calcule n en se servant de l'algorithme de Hörner (cf 5.14). En effet le calcul de n = c0*b3 + c1*b2 + c2*b + c3 revient à calculer la valeur du polynôme P(x) = c0*x3 + c1*x2 + c2*x + c3 pour x = b.
n va contenir successivement :
0 (n : = 0) puis
c0 (n : = n*b + c0) puis
c0*b + c1 (n : = n*b + c1) puis
c0*b2 + c1*b + c2 = (c0*b + c1)*b + c2 (n : = n*b + c2) et enfin
c0*b3 + c1*b2 + c2*b + c3 (n : = n*b + c3).
On écrit donc la fonction nombre dans Xcas :
nombre(m,b):={
local s,k,am,nm,n; 
  s:=(size(m));  
  n:=(0);  
  k:=(0);  
  if (s!=0) { 
      while(k<s){ 
          am:=(asc(m[k])[0]);  
          if (am>64) { 
              nm:=(am-55);  
            } 
           else { 
              nm:=(am-48);  
            };  
          if (nm>(b-1)) { 
              return("erreur");  
            }  
          n:=(n*b+nm);  
          k:=(k+1);  
        };  
    }   
  return(n);
}


Documentation de giac écrite par Renée De Graeve