Wpis z mikrobloga

Podrzuci ktoś prosty i w miarę wydajnym algorytm dzielenia dwóch liczb naturalnych ( bez reszty ), żeby dało się przyjemnie zaimplementować na asembler/maszynę rejestrową ( czyli dobrze będzie dzielić / mnożyć przez 2 ( SHR / SHL ) lub in(de)krementować daną liczbę o 1)?
Modulo potem też mam do zrobienia, więc jeśli będzie dało się zmodyfikować chętnie zobaczę jak
#informatyka #programowanie
  • 7
@Lewo: Nie wiem czy tak ten algorytm się nazywa (być może nie ma w ogóle nazwy), ale chodzi o dzielenie przez odejmowanie. Tak jak mnożenie to wielokrotne dodawanie to dzielenie to wielokrotne odejmowanie.

Od dzielnej odejmujesz dzielnik dopóki dzielna >= dzielnik. Liczba odejmowań to wynik dzielenia, jeśli na końcu nie dostaniesz 0 to wartość, która zostaje to reszta z dzielenia. Chyba nie da się już bardziej uprościć ( ͡° ʖ
@pikej100: jakbys był ciekawy, to mnożenie można zrobić przez dodawanie ( mało wydajnie ) lub też przez przesunięcia bitowe ( metoda rosyjskich chłopów ). Jak będziesz ciekawy to przetestuj ( powinno dać się odczuć różnicę mimo, że kompilator może metode przez dodawanie zoptymalizować )