Про числа со знаком тут уже достаточно сказали, поэтому рассмотрим сравнение натуральных чисел представленных цепочками (массивами) бит от старшего разряда к младшему. Для сравнения массивов одинаковой длины
есть простое правило:
Цитата:
Если имеются два массива
и
, то отношение
выполняется в том и только в том случае, если существует индекс
такой, что
и
для всякого
(Н. Вирт. Алгоритмы + Структуры данных = программы. М.: Мир, 1985, С.27.)
Не нарушая общности для определенности будем считать
.
Пусть результат сравнения
- массив из двух бит и пусть:
, если
;
, если
;
, если
Тогда:
Код:
// Шаг 1. Сравниваем x и y от старшего разряда к младшему:
if x[1] xor y[1] then k :=1 else
if x[2] xor y[2] then k :=2 else
…
if x[7] xor y[7] then k :=7 else k := 8;
// Шаг 2. Получаем результат:
if x[k] xor y[k] then
begin
z[1] := x[k] and 1;
z[2] := not z[1];
end
else
begin
z[1] := 0;
z[2] := 0;
end;