Про числа со знаком тут уже достаточно сказали, поэтому рассмотрим сравнение натуральных чисел представленных цепочками (массивами) бит от старшего разряда к младшему. Для сравнения массивов одинаковой длины
![$L$ $L$](https://dxdy-02.korotkov.co.uk/f/d/d/c/ddcb483302ed36a59286424aa5e0be1782.png)
есть простое правило:
Цитата:
Если имеются два массива
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
и
![$y$ $y$](https://dxdy-02.korotkov.co.uk/f/d/e/c/deceeaf6940a8c7a5a02373728002b0f82.png)
, то отношение
![$x < y$ $x < y$](https://dxdy-03.korotkov.co.uk/f/a/a/9/aa99d366a0125c60e3800f3bed358ad482.png)
выполняется в том и только в том случае, если существует индекс
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
такой, что
![$x[k] < y[k]$ $x[k] < y[k]$](https://dxdy-04.korotkov.co.uk/f/f/2/5/f255d25e1e4a51dfc92112c58d52f55582.png)
и
![$x[i] = y[i]$ $x[i] = y[i]$](https://dxdy-04.korotkov.co.uk/f/3/e/d/3ede3b4da63aad947c9a5280c8d8882082.png)
для всякого
![$i < k$ $i < k$](https://dxdy-02.korotkov.co.uk/f/d/6/4/d64eaf9867f568f5214d4e29b0d2aeec82.png)
(Н. Вирт. Алгоритмы + Структуры данных = программы. М.: Мир, 1985, С.27.)
Не нарушая общности для определенности будем считать
![$L=8$ $L=8$](https://dxdy-02.korotkov.co.uk/f/d/0/8/d08fc8a142bad44bcd37c691511c7a9582.png)
.
Пусть результат сравнения
![$z$ $z$](https://dxdy-04.korotkov.co.uk/f/f/9/3/f93ce33e511096ed626b4719d50f17d282.png)
- массив из двух бит и пусть:
![$z =00$ $z =00$](https://dxdy-04.korotkov.co.uk/f/f/2/8/f286c5b5c1f5eed8352848e79a29572682.png)
, если
![$x=y$ $x=y$](https://dxdy-04.korotkov.co.uk/f/b/1/1/b1185cf9f05b29c99b55c0cde01294f582.png)
;
![$z=10$ $z=10$](https://dxdy-03.korotkov.co.uk/f/2/e/9/2e9f728124ad775fb206ddba4b74428782.png)
, если
![$x>y$ $x>y$](https://dxdy-02.korotkov.co.uk/f/d/a/3/da3b83bb996516b60c4cd3e6bf44404482.png)
;
![$z=01$ $z=01$](https://dxdy-01.korotkov.co.uk/f/0/6/5/06523db893a4f2a57b8e6287dd2f198782.png)
, если
![$x<y$ $x<y$](https://dxdy-01.korotkov.co.uk/f/c/e/7/ce73aa3b5ddddfa43916903ff752415e82.png)
Тогда:
Код:
// Шаг 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;