Системы счисления, используемые в информатике

То, что привычные для нас числа имеют основание 10, не вызвано никакими особыми причинами. Вероятно, арабы взяли за основу число 10, просто потому, что в качестве "счетного устройства" они использовали десять пальцев рук. Однако у некоторых народов использовались и другие системы счисления.

Десятичная позиционная система счисления является одним из способов кодирования натуральных чисел. В информатике кроме десятичной системы счисления для кодирования натуральных чисел широко применяются системы счисления с основаниями 2, 8 и 16.

Вопреки распространенному заблуждению, двоичная система счисления была придумана не инженерами, разрабатывавшими вычислительные машины, а философами и математиками задолго до появления компьютеров, ещё в XVII ‑ XIX вв. Возможность представления чисел, построенных на основании только двух цифр - 0 и 1, впервые была предложена великим немецкий ученый Готфридом Вильгельмом Лейбницем в 1666 году. Он считал: "Вычисление с помощью двоек … является для науки основным и порождает новые открытия… При сведении чисел к простейшим началам, каковы 0 и 1, везде появляется чудесный порядок".

Система счисления с основанием 2 имеет простейший набор цифр - 0 и 1. В связи с этим правила выполнения арифметических операций с двоичными числами предельно просты:

Сложение Вычитание Умножение
0+0=0 0+1=1 1+0=1 1+1=10 0-0=0 1-0=1 1-1=0 10-1=1 0*0=0 0*1=0 1*0=0 1*1=1

Правила выполнения арифметических операций во всех позиционных системах счисления одинаковы. Рассмотрим примеры выполнения арифметических операций с целыми двоичными числами:

1) 1011001 + 11101 2) 100111 - 1001 3) 11011 * 1001 11011___
4) 11011 ½1001 1001 ½11 1001    

Простота двоичной системы счисления позволяет использовать для отображения двоичных чисел несложные устройства, работающее в режиме двоичного индикатора, принимающего только два возможных значения 1 и 0 или, соответственно, "включено" и "выключено". Электрическая лампа является одним из примеров двоичного индикатора. Если выстроить в один ряд N электрических лампочек, то можно получить устройство для представления N-разрядных двоичных чисел.

Неудобство использования людьми двоичной системы в практической деятельности является быстро нарастающая громоздкость двоичных чисел. Например, число 327 в десятичной системе счисления в двоичной системе счисления имеет аналог 101000111. С этой точки зрения чем больше основание системы счисления, тем более короткими получаются числа, но более сложными для запоминания человеком становятся таблицы сложения и умножения чисел. В этой связи десятичная система представляется оптимальной для практического использования людьми. Однако в информатике более эффективными считаются шестнадцатеричная и восьмеричная системы счисления. В качестве цифр в шестнадцатеричной системе используются знаки: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, а в восьмеричной: 0,1,2,3,4,5,6,7. Так как в разных системах счисления применяются общие цифры, то не всегда можно сразу определить, в какой системе счисления представлено число. Для этого принято указывать для числа основание системы счисления в качестве нижнего индекса. Например, 12110 и 12116– это разные числа, представленные соответственно в десятичной и шестнадцатеричной системах счисления. Число 1410 в шестнадцатеричной системе будет иметь аналог E16, а число 714310=1BE716.

Особенностью восьмеричной системы счисления является то, что она, во-первых, использует привычные цифры, а во-вторых, - даёт более компактные числа по сравнению с двоичной системой счисления. Примером восьмеричного числа является число 5078 = 32710.

Выбор для кодирования информации той или иной системы счисления определяется в информатике эффективностью использования результатов кодирования с прагматической точки зрения. Например, при работе с калькулятором пользователю удобно задавать числа и получать результаты расчетов в привычной десятичной системе счисления. В тоже время электронное устройство калькулятора может работать с числами, представленными в двоичной системе счисления. Поэтому на практике возникает необходимость в переводе чисел из одной системы счисления в другую. Очевидно, что между числами в различных системах счисления, обозначающих одинаковое количество, существует взаимно однозначное соответствие.

Преобразовать число любой системы счисления в эквивалент числа в десятичной системе счисления совсем не сложно. Для этого достаточно представить число в виде формулы (1) и вычислить её, заменив в ней цифры и основание соответствующими десятичными эквивалентами. Например, 1BE716 = 1×163 + 11×162 + 14×161 + 7×160 = 714310.

Еще проще преобразовать шестнадцатеричное или восьмеричное число в двоичное. Для преобразования шестнадцатеричного числа в двоичное необходимо каждую цифру шестнадцатеричного числа заменить соответствующим четырехразрядным двоичным числом. При этом используется следующая таблица перевода:

A B C D E F

Например, 14716 записывается как 0001 0100 0111 = 1010001112 (незначащие нули отбрасываются).

Аналогично выполняется преобразование восьмеричного числа в двоичное. Только в этом случае необходимо каждую восьмеричную цифру числа представить трехразрядным двоичным числом, используя следующую таблицу перевода:

Например, 1478 преобразуется как 001 100 111 = 11001112 (незначащие нули отбрасываются).

Двоичное число легко преобразовать в восьмеричное или шестнадцатеричное, стоит только разбить его соответственно на тройки или четверки двоичных разрядов, начиная с младшего разряда, а затем полученные трёхзначные или четырехзначные двоичные числа заменить эквивалентными восьмеричными или шестнадцатеричными цифрами, пользуясь приведенными выше таблицами. Недостающие старшие разряды дополняются незначащими нулевыми разрядами. Например, 101010001112 записывается как 010 101 000 111 = 25078. Это же число преобразуется в шестнадцатеричное число как 0101 0100 0111 = 54716. Простота рассмотренных выше примеров перевода двоичных, восьмеричных и шестнадцатеричных чисел из одной системы счисления в другую связана с тем, что эти системы имеют основания, являющиеся степенью 2.

Метод перевода числа из десятичной системы в произвольно заданную, например, в шестнадцатеричную несколько сложнее. Для этого требуется произвести серию делений числа на основание P. Проиллюстрируем на примерах общий метод преобразования целого числа из десятичной системы счисления в другую заданную. Пусть нужно перевести в шестнадцатеричную систему счисления число 714310. Будем делить 714310 последовательно на 16 (основание системы счисления), а полученные остатки от деления заменять эквивалентными цифрами шестнадцатеричной системы счисления, нулевые остатки в том числе:

7143 : 16 = 446 и 7 = 716 в остатке,

446 : 16 = 27 и 14 = Е16 в остатке,

27 : 16 = 1 и 11 = В16 в остатке,

1 : 16 = 0 и 1 = 116 в остатке.

Выписав все остатки, представленные шестнадцатеричными цифрами, начиная с последнего, получим соответствующее шестнадцатеричное число. В результате получим 714310 = 1ВЕ716. Для других систем счисления деление надо будет производить на соответствующее основание и остатки заменять соответствующими цифрами. Пусть, например, нужно перевести в двоичную систему счисления число 23410. Процесс перевода будет выглядеть так:

234 : 2 = 117 и 0 = 02 в остатке,

117 : 2 = 58 и 1 = 12 в остатке,

58 : 2 = 29 и 0 = 02 в остатке,

29 : 2 = 14 и 1 = 12 в остатке,

14 : 2 = 7 и 0 = 02 в остатке,

7 : 2 = 3 и 1 = 12 в остатке

3 : 2 = 1 и 1 = 12 в остатке

1 : 2 = 0 и 1 = 12 в остатке

В результате получим 23410 = 111010102.

Кроме рассмотренных выше классических позиционных систем счисления в информатике для преобразования десятичных чисел в двоичный код разработана так называемая двоично-десятичная система кодирования. Она обеспечивает лёгкость перевода данных, представленных в десятичной системе счисления в двоичную форму представления и обратно. В этой системе кодирования десятичные цифры кодируются четырёхразрядными целыми двоичными числами (кодами), представленными в следующей таблице перевода:

Цифра
Код

Получаемый в результате перевода двоично-десятичный код лишь внешне похож на двоичное число, но не является двоичным эквивалентом соответствующего десятичного числа. Например, число 970310 в двоично-десятичной системе выглядит так: 10010111000000112-10. Двоичный же эквивалент равен 100101111001112. Двоично-десятичная система может быть использована и как своеобразная позиционная система счисления, однако порядок выполнения арифметических операций над такими числами будет отличаться большей сложностью. Поэтому двоично-десятичный код обычно выступает в качестве посредника при переходе от десятичных чисел к двоичным и обратно.

Наши рекомендации