[an error occurred while processing this directive]
|
X=12345=0x3039
1) (0x3039*0x68db9 + 1)/0x10000 = 0x13C083E31/0x10000 = 0x13C08
=0x13c09
Забыли добавить 1 ( можно конечно и округлить результат умножения,
но 1 добавить проще, а эффект тот же )
w1=1, X=0x3C08
x=0x3c09
2) 0x3c08*0xA = 0x25850, w2=2, X=0x5850
x=0x585a
3) 0x5850*0xA = 0x37320, w3=3, X=0x7320
x=0x7384
4) 0x7320*0xA = 0x47F40, w4=4, X=0x7F40
x=0x8328
5) 0x7F40*0xA = 0x4F880, w5=4???
0x8328*0xa=0x51f90
Все тип-топ.
Похоже, что wi=(Xi*0xA+0x8000)/0x10000, X(i+1)=Xi&0xFFFF. Так?
Всегда ли?
Если можно - ссылку или автора.
За алгоритм - спасибо. Красиво.
Автора не знаю. А суть BH правильно изложил. Целое число в двоичном
коде переводится в дробное с теми же десятичными цифрами умножением
на 1/10000. Далее цыфры из дробного числа вытаскиваются последователь-
ным умножением на 10.
E-mail: info@telesys.ru