
Например, для числа 2048 сборка пойдет в таком порядке:
N = 0 – исходное значение
N = 0 • 10 + 2 = 2
N = 2 • 10 + 0 = 20
N = 20 • 10 + 4 = 204
N = 204 • 10 + 8 = 2048
А вот программа, работающая по этому алгоритму.
var N : integer; i : integer; S : string;
begin
Write('S= '); Readln(S);
N:=0;
for i:=1 to Length(S) do N:= 10*N + Ord(S[i]) – Ord ('0');
Writeln(N); Readln;
end.
Разобравшись со сборкой-разборкой десятичных чисел, замахнемся теперь на процедуры, пригодные для любых систем счисления. Но прежде ознакомимся с устройством этих систем.
«Отец» двоичной системы Лейбниц не помышлял о великом будущем своей придумки, и на долгие годы о ней забыли. Но изобретатели компьютеров вспомнили. Все компьютеры – от первых моделей до самых современных – строятся из простейших элементов памяти – триггеров. Триггер – это электронная схема с двумя устойчивыми состояниями. Подобие триггера – комнатный выключатель, что может (если исправен) находиться в двух устойчивых состояниях: «включен» и «отключен». То есть, выключатель «помнит» состояние, в которое его привели в последний раз, и является элементом памяти.
Итак, элементы памяти с двумя состояниями – триггеры – составляют основу компьютеров (и почему их не назвали «дваггерами»?). Одно из состояний инженеры обозначили числом 0, а другое – 1. Стало быть, триггер способен «помнить» одно из этих чисел. Маловато для серьезного счета, не так ли? Тогда и вспомнили о двоичной системе Лейбница. Инженеры соединили несколько триггеров в цепочку и назвали эту «гирлянду» регистром. Каждый триггер в регистре, подобно цифрам в десятичном числе, обладает своим весом. В зависимости от позиции в регистре, вес триггера может составлять 1, 2, 4, 8 и так далее, – это степени числа 2. Например, число 12 изображается в двоичной системе так (рис. 106).

Сравните эту кодировку с десятичной системой, – принцип тот же, только веса разрядов другие. Если в десятичной системе вес очередного разряда вдесятеро больше предыдущего, то в двоичной системе – вдвое. Числа, хранящиеся в триггерах (0 или 1) служат множителями этих весов. Таким образом, при достаточной длине регистра в двоичной системе можно изобразить сколь угодно большое число.
Договоримся о форме записи двоичных чисел, иначе путаницы не избежать. У программистов приняты две формы: к символам двоичного изображения добавляют либо суффикс «B» (от Binary – «двоичный»), либо маленькую двоечку. Например, число 12 в двоичной системе записывается так:
1100B или 1100b или 11002
А иначе эту запись можно понять как «тысяча сто» в десятичной системе.
Компьютеры никогда не жаловались на двоичную систему, она их вполне устраивает. Сетовать стали программисты, – уж очень громоздкой получалась запись сравнительно небольших чисел, например:
4005 = 1111101001012