Машинные языки программирования
7

эквивалентен перемещению «из ячейки в ячейку», но помимо сдвига отрицательный операнд перемещается в буфер, а за тем из буфера обратно в освободившуюся ячейку памяти. Если в роли буфера использовать регистр микропроцессора, то перемещение отрицательного числа будет эквивалентно одному перемещению «из ячейки в ячейку». Значит количеству сдвигов вторым методом эквивалентно на единицу большее количество перемещений «из ячейки в ячейку». Основываясь на этом, запишем эквивалентное количество перемещений «из ячейки в ячейку» для двух приведенных примеров. Для комбинации 100101: первый метод 4*2=8, второй метод 4+1=5, третий метод=6. Для комбинации 110000: первый метод 8*2=16, второй метод 8+1=9, третий метод=6.

Помимо операций перемещения чисел в памяти все три метода предусматривают использование операций определения знака. Несмотря на различия методов можно выделить некоторые общие особенности этих операций. Во-первых: определение знака производится последовательно от младшей ячейки памяти к старшей. Во-вторых: всякое число при движении от младшей ячейки к старшей проверяется как минимум один раз. Из первой особенности следует, что в программах придется использовать указатель проверяемого числа, который будет хранится в регистре микропроцессора или в ячейке памяти и в начале программы примет значение адреса самой младшей ячейки исходного массива, а затем инкрементируясь достигнет значения адреса старшей ячейки. Использование указателя проверяемого числа подразумевает его сравнение со значением старшего адреса исходного массива после каждой операции инкрементации. Чем больше проходов от младшей ячейки исходного массива к младшей, тем больше количество таких сравнений. Другое свойство: поскольку при использовании первого и третьего методов приходится совершать несколько проходов, то из второй особенности следует, что знак числа будет проверен несколько раз. Для третьего метода, например, количество проходов - всегда одинаково и равно двум, по этому всякое число