- •Экскурс в нумерации и системы счисления. Мультипликативные системы счисления
- •Аддитивные системы счисления
- •Алфавитные аддитивные системы счисления
- •Здесь собраны наиболее известные нумерации мира:
- •Латинская (Римская) нумерация
- •Славянская кириллическая нумерация
- •Славянская глаголическая нумерация
- •Китайская нумерация
- •Новая, или арабская нумерация
- •Египетская нумерация
- •Древняя греческая нумерация
- •Вавилонская нумерация
- •Нумерация индейцев Майя
- •Перевод из десятичной в произвольную позиционную систему счисления.
- •Перевод произвольной позиционной системы счисления в десятичную.
- •Перевод из двоичной в шестнадцатеричную системы
- •Перевод из шестнадцатеричной системы счисления в двоичную.
- •Лабораторная работа . Внутреннее представление целочисленных данных в ibm pc
Перевод из десятичной в произвольную позиционную систему счисления.
Для перевода из десятичной в произвольную позиционную систему счисления необходимо делить число с остатком на основание системы счисления до тех пор, пока частное больше основания системы счисления.
Рассмотрим на примере преобразования чисел из десятичной системы счисления в двоичную.
Метод 1.
Деление на 2 в убывающей степени. Можно преобразовать десятичное число в двоичное, производя деление десятичного числа на 2 в соответствующей степени. Предположим, необходимо получить двоичный эквивалент десятичного числа 76. Наибольшим числом, которое не превышает 76 и которое можно выразить как два в степени, является число 64 (26). Поэтому необходимо установить бит 6 в двоичном эквиваленте:
01000000 = 64
Вычтем 64 из 76 и получим число 12. Наиболее близкое к нему число, выраженное как 2 в стпени, будет 8 (23), поэтому устанавливаем бит 3:
64
+8
01001000 72
Вычтем 8 из 12 и получим число 4, которое можно выразить как 22. Устанавливаем бит 2. Так как остатка больше нет, то получаем окончательное двоичное число 01001100b. Таким образом, был получен двоичный эквивалент путем последовательного вычитания чисел, выраженных как 2 в степени.
Последовательность шагов показана ниже:
72/64 = 1, остаток 12
12/8 = 1, остаток 4
4/4 = 1, остаток 0
Как только остаток станет равным нулю, цикл останавливается. Такой способ можно использовать при ручном преобразовании чисел.
Метод 2.
Повторяющееся деление на 2. Другой путь преобразования десятичного числа в двоичное, это последовательное деление десятичного числа на 2. Остаток от деления на каждом шаге будет заполнять соответствующие разряды двоичного числа. Для демонстрации метода возьмем ранее использованное число 76 (рис.1).
76 / 2 = 38, остаток 0
38 / 2 = 19, остаток 0
19 / 2 = 9, остаток 1
9 / 2 = 4, остаток 1
4 / 2 = 2, остаток 0
2 / 2 = 1, остаток 0
1 / 2 = 0, остаток 1
0 / 2 = 0, остаток 0
1 0 0 1 1 0 0
Рис 1. Преобразование чисел
На рисунке видно, что деление производилось восемь раз. Первый остаток был помещен в нулевой разряд. Этот метод можно считать идеальным для создания циклического алгоритма, но он отнимает много времени при вычислении вручную.
Рассмотрим еще одну модификацию этого метода.
Пример.
Перевести десятичное число в двоичное 23.12510"2" с.с.
1) Переведем целую часть: |
2) Переведем дробную часть: |
Таким образом: 2310 = 101112; 0.12510 = 0.0012. Результат: 23.12510 = 10111.0012.
Необходимо отметить, что целые числа остаются целыми, а правильные дроби - дробями в любой системе счисления.
Таким же образом поступаем для перевода в 16-ричную систему счисления.
Перевести 62210"16" с.с.
Результат: 62210 = 26E16
Перевод произвольной позиционной системы счисления в десятичную.
Перевод чисел в десятичную систему осуществляется путем составления степенного ряда с основанием той системы, из которой число переводится. Затем подсчитывается значение суммы.
Рассмотрим пример перевода двоичного числа 101100,0112 в десятичное.
1011002 =
= 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 0 · 1 =
= 1 · 32 + 0 · 16 + 1 · 8 + 1 · 4 + 0 · 2 + 0 · 1 =
= 32 + 8 + 4 + 0 = 4410
Целая часть этого числа равна 44, а вот перевод дробной части:
Итак, число 1100,0112 = 12,37510.
Для удобства перевода, целую и дробную части числа почти всегда переводят по-отдельности, а результат потом суммируют.
Точно также осуществляется перевод из любой системы счисления, только вместо «2» ставится основание системы.
Перевести 1216,04(8)."10" с.с.
1216,04(8)=183+282+181+680+4 8-2 = 512+128+8+6+0,0625 = 654,0625(10).
Перевести 29A,5(16). ."10" с.с.
29A,5(16) = 2162+9161+10160+516-1 = 512+144+10+0,3125 = 656,3125(10).