суббота, 7 марта 2009 г.

x86: idiv, sar

Целые числа можно легко делить на степени двойки используя команду sar. Однако команда sar может дать результат отличный от полученного с помощью команды idiv.

idiv округляет результат в сторону нуля. Знак остатка всегда равен знаку делимого.

17 idiv (-8) = -2 (1 в остатке)
17 = (-8) * (-2) + 1

-17 idiv 8 = -2 (-1 в остатке)
-17 = 8 * (-2) + (-1)

В вычислениях с sar, результат округляется в меньшую сторону (в сторону минус бесконечности)

-17 sar 3 = -3

Комментариев нет:

Отправить комментарий