Здравствуйте, Worminator X, Вы писали:
WX>Здравствуйте, netch80, Вы писали:
N>>Деление тупейшее сдвигом и вычитанием, хотя записать можно достаточно оптимально.
WX>Можно на каком-нибудь примере? Или хотя бы название алгоритма, чтобы загуглить.
Просто restoring division, хотя под этим именем чаще понимают аппаратную реализацию. Или schoolbook division. Фактически там примерно такое:
unsigned remainder = dividend;
unsigned quotient = 0;
unsigned temp_divisor = divisor << MAX_SHIFT;
for (step = 0; step < MAX_SHIFT; ++step) {
quotient <<= 1;
if (remainder >= temp_divisor) { remainder -= temp_divisor; ++quotient; }
temp_divisor >>= 1;
}
Но это хорошая форма для процессора, где не нужно ужиматься в 8 бит. А то, что я имел в виду, что видел где-то очень компактный вариант именно для 6502, но уже не помню детали.