2010-05-06 21 views

Répondre

0

Une représentation binaire redondant est juste une expression de la forme:

\sum_{i=0}^n d_i 2^n 

où les s d_i de » sont tirés d'un ensemble plus vaste qu'une simple {0,1}.

divisant par deux ou décalage prend à droite que

\sum_{i=0}^{n-1} d_{i+1} 2^n + f(d_0) 

L'astuce est dans la façon de traiter avec ajustement pour la représentation redondante pour d_0.

Si votre RBR a chiffres du formulaire {0,1,2} et a un 2 pour le chiffre le moins significatif, vous devrez alors ajouter 1 au résultat pour compenser, si f(0) = 0, f(1) = 0, f(2) = 1 devrait fonctionner.

  • 4 = 12_base2, donc 12_base2 >> 1 = 1 + f(2) = 1 + 1 = 2_base2 = 2 comme prévu.
  • 6 = 102_base2, donc 102_base2 >> 1 = 10_base2 + f(2) = 11_base2 = 3

Vous pouvez obtenir quelque chose de similaire pour en définissant f(-1) = -1 représentations binaires signées redondantes (à savoir avec d_i en {-1,0,1}).

  • 1 = 1(-1)_base2, donc 1(-1)_base2 >> 1 = 1 + f(-1) = 1 - 1 = 0

En fin de compte l'approche naïve du simple déplacement fonctionne, il faut juste un facteur fudge pour tenir compte de tout codage redondant des chiffres décalés.

Si votre RBR choisi comprend plus d'options, vous devrez ajuster le facteur de fudge en conséquence.