Формально перевод десятичного числа D в двоичное B делается так: Исходное число делится с остатком на 2 при этом частное запоминаем для дальнейших операций, а остаток записываем в младший бит двоичного числа. Затем частное снова делится на 2 и остаток записывается в следующий разряд И так до тех пор, пока не получится такой результат - частное равно 0 а остаток равен 1. Разберем пример с десятичным числом 2001 2001/2=1000 ост 1 (1й остаток младший разряд (крайний справа)) 1000/2=500 ост 0 500/2=250 ост 0 250/2=125 ост 0 125/2=62 ост 1 62/2=31 ост 0 31/2=15 ост 1 15/2=7 ост 1 7/2=3 ост 1 3/2=1 ост 1 1/2=0 ост 1 (Старший разряд (крайний слева))
Теперь "Вписываем" остатки, в разряды двоичного числа, начиная с 1-го младшего: 11111010001
Const n = 10; var a: array[1..n] of integer; i, j, t: integer; flag:boolean;
begin Randomize; Writeln('Исходный массив'); for i := 1 to n do begin a[i] := random(101)-50; Write(a[i]:4) end; Writeln; i:=1; repeat flag:=true; for j := 1 to n-i do if a[j] > a[j+1] then begin t := a[j]; a[j] := a[j+1]; a[j+1] := t; flag:=false end; Inc(i); until (i>n-1) or flag; Writeln('Отсортированный по возрастанию массив'); for i := 1 to n do Write(a[i]:4); Writeln end.