Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sys_Programming / ЛР1 / Теория.doc
Скачиваний:
63
Добавлен:
20.02.2016
Размер:
1.11 Mб
Скачать

Перевод из десятичной в произвольную позиционную систему счисления.

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

Рассмотрим на примере преобразования чисел из десятичной системы счисления в двоичную.

Метод 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. 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)=183+282+181+680+4 8-2 = 512+128+8+6+0,0625 = 654,0625(10).

Перевести 29A,5(16). ."10" с.с.

29A,5(16) = 2162+9161+10160+516-1 = 512+144+10+0,3125 = 656,3125(10).

Соседние файлы в папке ЛР1