Алгоритм карандашного и бумажного деления использует только «сдвиги» (основа 10 сдвигов) и вычитания. Вы можете сделать то же самое в базе 2.
Извините, я не могу найти ссылку для алгоритма, но вы должны были выучить ее в детстве.
РЕДАКТИРОВАТЬ: фактически, поскольку добавления дешевы, вам не нужно пытаться извлечь правильные цифры одну за другой, так что вы можете немного упростить алгоритм ...
Принятие положительных дивидендов и делителей ...
Возьмите степень двойки сразу больше, чем делитель (здесь, 32).
Легко разделить ваше число на эту степень двойки. Скажем, дивизия производит k1
.
Вычтите k1*24
из числа (позвоните остальным r1
) и итерируйте ...
Когда вы получили номера k1
, k2
, ... kn
, а остальные rn
больше не содержат 32, выполните последнюю проверку, чтобы убедиться, что rn
содержит 24.
Результат деления k1+k2+...+kn (+1 if 24 fits in rn)
.