Il existe en fait une raison mathématique raisonnablement bonne pour effectuer la réplication de bits:
Notez d'abord que la chaîne de n bits, , représente en fait la valeur et nous voulons produire la chaîne de m bits, , où et
NN2n−1Mn<mN2n−1≈M2m−1
Nous échelonnons d'abord le numérateur et le dénominateur avec
et cela se simplifie en
N.(2n+1)(2n−1)(2n+1)≈M2m−1
N.(2n+1)22n−1≈M2m−1
Dans votre cas, et et nous pouvons "arrêter" ici, mais mais le processus peut être répété, (ad nauseum), si m >> n.n∈{5,6}m=8
Nous faisons ensuite l'approximation ...
qui simplifie en
N.(2n+1)22n≈M2m
N.(2n+1)22n−m≈M
Notez que équivaut à répéter la chaîne de n bits, pour créer une chaîne de 2n bits, et la division décale les LSB de pour laisser un résultat de M bits.N.(2n+1)2n−m
QED
Bien sûr, le calcul «correct» est mais cette approximation, en général , fonctionne la plupart du temps. Bien sûr, il y a des moments où il est inexact, mais IIRC seulement d'un bit et relativement rarement.M=⌊((2m−1)N2n−1+12⌋