Const n=4; { количество разрядов (цифр) в числе } var a:array[1..n] of integer; i,j,k:integer; begin Write('Введите ',n,'-значное число: '); Read(k); for i:=1 to 4 do begin a[i]:=k mod 10; k:=k div 10 end; for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin k:=a[i]; a[i]:=a[j]; a[j]:=k end; Writeln('Наибольшая цифра ',a[n],', наименьшая цифра ',a[1], ', их разность ',a[n]-a[1]) end.
Теперь переведем из 2 в 8 10000011000110101 (2), разбиваем числа по 3 начиная с конца: 010 000 011 000 110 101 , переведем каждое из них в 8 2 0 3 0 6 5 10000011000110101 (2) = 203065 (8)
Теперь переведем из 2 16 10000011000110101 (2), разбиваем числа по 4 начиная с конца: 0001 0000 0110 0011 0101 , переведем каждое из них в 16 1 0 6 3 5 10000011000110101 (2) = 10635 (16)
Всё легко, давайте снизу вверх пойдем.
Нам нужно чтобы при A = 1 и B = 1 было ложно само выражение, как это сделать?
A*!B вот так можно, проверяем это выражение на следующих строках.
A = 1, B = 0, 1 * 1 = 1, верно, получили 1.
A = 0, B = 1, 0 * 0 = 0, верно, получили 0.
A = 0, B = 0, 0 * 1 = 0, верно, получили 0.
Получается, что нам подходит наше выражение A*!B (А умножить на НЕ B)