Может ли кто-нибудь объяснить мне, почему знак остатка в этих случаях разный? Это ошибка эмулятора или настоящие процессоры тоже так делают?
8 / -3 : quotient(AL) = -2 remainder(AH) = 2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2
Может ли кто-нибудь объяснить мне, почему знак остатка в этих случаях разный? Это ошибка эмулятора или настоящие процессоры тоже так делают?
8 / -3 : quotient(AL) = -2 remainder(AH) = 2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2
Предполагается, что это работает именно так, хотя это сложно выяснить, прочитав документацию:
Нецелочисленные результаты усекаются (обрезаются) до 0.
В сочетании с «законом деления» X = dq + r (делимое — это делитель, умноженный на частное плюс остаток), мы обнаруживаем, что, следовательно, остаток r = X — d усекается (X / d)
Это показывает, что остаток зависит от знака делимого, но не от знака делителя.