Системы счисления
Система счисления – это способ записи чисел с помощью заданного набора символов, называемых цифрами.
Системы счисления подразделяются на позиционные и непозиционные.
В непозиционных системах счисления вес цифры не зависит от позиции (разряда), которую она занимает в числе. Примером непозиционной системы счисления является римская система счисления.
В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее позиции в последовательности цифр, изображающих число.
Каждая позиционная система счисления определяется некоторым числом b > 1, называемым основанием системы счисления. В процессе счета b единиц в каждом разряде объединяется в одну единицу следующего по старшинству разряда. Система счисления с основанием b также называется b -ичной. Для записи числа в b -ичной системе счисления требуется b цифр. Например, для записи числа в 10-тичной системе счисления требуется 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Целое число в b -ичной систем счисления представляется в виде полинома с основанием b:
,
где – целые числа, удовлетворяющие неравенству .
Запись числа x образуется из последовательности коэффициентов этого полинома:
.
Например, десятичное число 35710 есть краткая запись полинома
.
Подстрочный индекс обозначает основание системы счисления. Читается так: три сотни, пять десятков и семь единиц.
Тоже число в восьмеричной системе счисления означает
.
Наиболее употребимыми позиционными системами счисления являются двоичная, восьмеричная, десятичная, шестнадцатеричная и шестидесятеричная (для измерения времени и углов).
Двоичная система счисления используется для представления данных в компьютере. Она наиболее удобна, поскольку компьютеры проектируются на основе электронных элементов, имеющих два устойчивых состояния.
В 16-ричной системе счисления в качестве цифр используются арабские цифры
0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В качестве недостающих цифр используются буквы A, B, C, D, E, F, имеющие следующие значения:
A – 10
B – 11
C – 12
D – 13
E – 14
F – 15
Примеры 16-ричных чисел: A2CD, 71F8, EEEF.
Для записи правильных дробей используются отрицательные степени основания. Например, число 0,24710 есть краткая запись следующего выражения:
.
Число 0,2478 есть краткая запись следующего выражения:
.
Число 0,1012 есть краткая запись следующего выражения:
.
Если число имеет целую и дробную части, в его записи используются положительные и отрицательные степени основания.
Например число 357,2478 является краткой записью следующего выражения:
.
Перевод из произвольной системы счисления в десятичную
Для перевода целого числа из произвольной системы счисления в десятичную надо преобразовать его запись в полином по соответствующему основанию и вычислить его значение.
Например, для перевода двоичного числа 110102 в десятичное, надо вычислить значение полинома
.
Переведем 16-ричное число 3A7F16 в десятичную систему:
.
Аналогичным образом выполняется перевод дробного числа в десятичную систему счисления.
Перевод из десятичной в произвольную позиционную систему счисления
Для перевода целых и дробных чисел используются разные алгоритмы.
Перевод целых чисел выполняется по следующему алгоритму.
1. Исходное целое число делится на основание системы счисления, в которую переводится (на 2 – при переводе в двоичную систему счисления или на 16 – при переводе в шестнадцатеричную). Получается частное и остаток.
2. Если полученное частное меньше основания системы счисления, в которую выполняется перевод, процесс деления прекращается, переходят к шагу 3. Иначе надо вернуться к шагу 1.
3. Последнее частное и полученные остатки, записанные в обратном порядке, дают результат перевода.
Пример 1. Выполнить перевод числа 1910 в двоичную систему счисления:
Таким образом, 1910 = 100112.
Пример 2. Выполнить перевод числа 12310 в шестнадцатеричную систему счисления:
Здесь остаток 11 преобразован в шестнадцатеричную цифру B.
Таким образом, 12310 = 7В16.
Правильные дроби переводятся из десятичной системы счисления в произвольную систему счисления по следующему алгоритму.
1. Исходная дробь умножается на основание системы счисления, в которую выполняется перевод.
2. В полученном произведении целая часть отбрасывается и повторяется шаг 1.
3. Умножения продолжается до тех пор, пока ни будет получен нулевой результат в дробной части произведения или требуемое количество цифр в результате.
4. Отброшенные целые части, записанные с помощью цифр соответствующей системы счисления, образуют результат перевода.
Пример 3. Выполнить перевод числа 0,847 в двоичную систему счисления. Перевод выполнить до четырех значащих цифр после запятой.
Имеем:
Таким образом, 0,84710 = 0,11012.
Процедура перевода прервана на четвертом шаге, поскольку получено требуемое число разрядов результата. Очевидно, это привело к потере ряда цифр.
Пример 4. Выполнить перевод числа 0,84710 в шестнадцатеричную систему счисления. Перевод выполнить до трех значащих цифр.
Имеем:
В данном примере процедура перевода также прервана.
Таким образом, 0,84710 = 0,D8D16.
При переводе десятичного числа, имеющего целую и дробную часть, отдельно выполняется перевод целой и дробной части.
Восьмеричная и шестнадцатеричная системы счисления используются программистами для отображения содержимого байтов памяти, поскольку запись кодов в этих системах значительно короче, чем в двоичной системе.