logo
Программирование в среде Delphy / Программирование в среде Delphi

1.2. Системы счисления

Системы счисления бывают позиционные, когда каждый разряд числа имеет определенный вес, и знаковые, когда значение числа обозначают определенными знаками (римская система чисел). Мы будем рассматривать только позиционные системы счисления. В них в каждом разряде числа может быть только один символ.

Двоичная система счисления

Для записи двоичных чисел используются только два знака 0 и 1. Все вычислительные машины используют двоичную систему при своей работе. На выходе любого устройства имеется или низкий потенциал (0) или высокий (1). На рис.1.1 показан процесс переключения устройства из одного состояния в другое. Ранее были попытки использования десятичной системы счисления или троичной, но устройства на их основе оказались очень ненадежными

Для перевода числа из любой системы счисления в десятичную можно использовать следующую формулу:

U

t

1

0

t0

Рис.1.1

,

где ai – разрядные коэффициенты; b – основание системы счисления; i – номер разряда.

Первый целый разряд числа имеет номер 0, дробные разряды нумеруются отрицательными числами. Например, следующее двоичное число можно перевести в десятичное таким образом:

номера разрядов 43210

двоичное число 11011(2)

С10=1⋅20+1⋅21+0⋅22+1⋅23+1⋅24=27(10).

Для перевода десятичного числа в любую другую систему счисления нужно: целую часть числа сначала делить на основание системы счисления, пока остаток от деления не станет меньше основания, затем результат деления опять делится на основание и так до тех пор, пока результат последнего деления не станет меньше основания. Результат последнего деления дает старший разряд числа, а остатки от предыдущих делений – остальные разряды числа. Дробную часть десятичного числа и последующих результатов умножений нужно умножать на основание системы счисления. Целые части результатов умножений и дадут требуемую дробь.

Например, переведем десятичное число С10=25,35 в двоичное. Сначала целую часть этого числа будем делить на основание системы счисления – 2.

25(10)

2

1

12

2

0

6

2

0

3

2

1

1

Целая часть числа будет равна С(2)=11001(2). Дробную часть числа сначала будем умножать на основание системы счисления – 2, а затем дробные части результатов умножения опять умножать на основание системы счисления.

0,

35

*

2

0,

7

*

2

1,

4

*

2

0,

8

*

2

1,

6

Целые части результатов умножений дадут следующую двоичную дробь – 0,0101…(2).

Попробуем произвести сложение и вычитание двоичных чисел.

Сложение:

0

1

1

0

0

1

0

1

0

1

1

1

1

1

0

0

0

0

+

Здесь стрелочками показан перенос единицы в старший разряд числа, когда сумма разрядных чисел достигает или превышает основание системы счисления.

Вычитание:

_1

1

0

1

1

1

0

1

0

1

0

0

1

1

0

Здесь стрелочкой показан заем единицы из старшего разряда, которая для данного разряда равна основанию системы счисления.

Шестнадцатеричная система счисления

В шестнадцатеричной системе счисления для разрядных чисел используются не только 10 арабских цифр от 0 до 9, но и буквы латинского алфавита: A–10, B–11, C–12, D–13, E–14, F–15. Например, переведем следующее шестнадцатеричное число в десятичное.

номера разрядов 2 1 0

шестнадцатеричное число 1AE(16)

С10=14⋅160+10⋅161+1⋅162=430(10)

Теперь переведем десятичное число в шестнадцатеричное:

475(10)

16

32

29

16

155

16

1

144

13

11

В итоге последний результат деления и остатки от деления дадут следующее шестнадцатеричное число: 1DB(16).

Можно очень легко переводить шестнадцатеричные числа в двоичные и обратно, минуя десятичную систему счисления. Следует только иметь в виду, что один шестнадцатеричный разряд числа полностью соответствует четырем двоичным разрядам.

Например, переведем шестнадцатеричное число в двоичное:

A8E(16)=1010 1000 1110(2).