1.1. Системы счисления
Система счисления - это совокупность
приемов представления для обозначения натуральных чисел.Различают позиционные
и непозиционные системы счисления. В позиционной системе счисления одна и та же
цифра имеет различные значения в зависимости от места расположения. При этом
предполагается, что имеется некоторое число n, если в первом разряде имеется
ровно n единиц, то образуется единица во втором разряде, если имеется n единиц во
втором разряде, то прибавляется единица в третий разряд и т.д.Такое число n
называется основанием системы счислени. Основанием может быть любое натуральное
число больше единицы.Итак, для того, чтобы задать позиционную систему счисления
необходимо задать основание и алфавит, для изображения цифр. В десятичной системе
счисления основанием является 10, а алфавит состоит из цифр
{0,1,2,3,4,5,6,7,8,9}. В двоичной системе счисления основанием является 2, а
алфавит - цифры {0,1}. В восьмеричной системе счисления основание равно 8, а
алфавит состоит из следующих цифр (0,1,2,3,4,5,6,7). В шестнадцатеричной системе
счисления основание равно 16, а алфавит состоит из цифр и букв
(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E). Например, 19610 (индекс означает основание
системы счисления), или 100010112 , или 7128 , или A8F016.
Можно представить любое число cnc
n-1 ...c1c0 в виде суммы некоторого ряда:
cnon+cn-1on-1+...+c1o1+c0o0
,где n -номер разряда числа; сj - цифра
j-го разряда; o - основание.
Тогда число 19610 можно
записать следующим образом:
1*102+9*101+6*100
а число 100010112 можно
записать:
1*27+0*26+0*25+0*24+0*23+0*22+1*21+1*20
число 7128 можно записать:
7*82+1*81+2*80
a число A8F016 можно
записать:
A*163+8*162+F*161+0*160
Рассмотрим алгоритмы преобразования
чисел из одной системы счисления в другую. Алгоритм преобразования числа cnc
n-1 ...c1c0 в десятичную довольно прост и
основан на использовании формулы (9.1). Необходимо отметить, что если вместо
цифры в числе стоит буква, то ставится ее порядковый номер, например в числе A8F016
вместо A ставится 10, а вместо F ставится 15, тогда можно вычислить десятичный
аналог числа A8F016 :
10*163+8*162+15*161+0*160=43248
Алгоритм преобразование десятичного
числа D в другую систему счисления основан также на формуле (9.1), но более
сложен. Предположим что D = cnon+cn-1on-1+...+c1o1+c0o0
, при этом основание o нам известно, необходимо найти соответствующие цифры cncn-1...c1c0. Тогда
алгоритм будет следующий:
Делим число D на основание, получим
частное и остаток. Запоминаем остаток как c0, а частное cn on-1
+ cn-1on-2+...+c1 делим снова на
основание. Остаток от деления напишем как c1 , а частное cn
on-2+ cn-1on-3+...+c2 . Далее
находим остаток от делени c2 .Это процесс продолжается до тех пор,
пока не получим cn и частное не станет равное нулю. Рассмотрим
пример:
Перевести десятичное число 43248 в
шестнадцатеричное.
Считая, что 15 - это E , а 10 - это A , то
получим число A8F016 . Для перевода чисел из десятичной системы в
двоичную используют этот же алгоритм, только применяют упрощенный вариант. Число
раскладывают суммой степеней двойки. Например, число 525 можно представить
суммой (512+8 +4 +1), соответственно (29+23+22+20
), тогда двоичное число будет иметь единички только в разрядах с номерами 9, 3, 2 , 0, а само число 100001101. Для перевода в двоичную систему необходимо помнить
значения степеней двойки.
Taблица 1.1:Значение степеней двойки
Перевод систем счисления с основанием,
кратным 2, довольно прост. Если необходимо перевести шестнадцатиразрядное число
в двоичное, то поступают следующим образом: каждый разряд шестнадцатеричного
числа представляют четырехразрядным двоичным числом, в соответствии с таблицей
1.2:
Преобразование двоичных чисел в
шестнадцатеричные также возможно, используя эту же таблицу, объединяя четыре
разряда в один разряд шестнадцатеричного числа. Например, двоичное число
10010111 преобразуется в шестнадцатеричное число: 0111 -7 ,1001 -B, тогда само
число - B 7 . Для восьмеричных чисел возможно построить такую же таблицу,
учитывая,что один разряд восьмеричного числа может быть представлен
трехразрядным двоичным числом.
|