собственно сабж
x mod 2 можем сделать сдвигом || and 1
a мод 3?
Вид для печати
собственно сабж
x mod 2 можем сделать сдвигом || and 1
a мод 3?
но надо проверить- могу и наглючить:)Код:;in A - number
;out A - number mod 3
ld c,#c0
loop:
sub c
jz exit
jnc,nxt
add a,c
nxt:
rr c
jnc,loop
exit:
хм, я приблизительно умножал на 85, делил на 256 (выкидывал младший байт)
точность 1/256, вполне катит.
в общих чертах ясно.
спасибо, ребята!
ну да, дробные числа получаются по основанию 256. Деление на 256 - выкинуть младший байт, а умножение на константу - копеечное дело.
Жаль, в вузах нас этому не учили. Тот же Брезенхейм казался прям эдакой загадкой. Потом, когда я занялся цифровым синтезом, сам понял, что вот они, дроби (по сути).
А есть быстрый алгоритм деления числа (байта) на 3? Желательно без таблиц.
Умножить на 85 (%1010101) и сдвинуть на 8 бит.
;l=число
ld h,0
ld d,h,e,l
add hl,hl ;*2
add hl,hl ;*4
add hl,de ;*5
add hl,hl ;*10
add hl,hl ;*20
add hl,de ;*21
add hl,hl ;*42
add hl,hl ;*84
add hl,de ;*85
;h=результат