Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2.doc
Скачиваний:
3
Добавлен:
02.05.2019
Размер:
165.89 Кб
Скачать

2.2. Перевод чисел из одной системы счисления в другую

Человек, решая задачи на ЭВМ, имеет дело только с числами, записанными в десятичной СС. ЭВМ же десятичной СС10 "не понимает", она работает с числами, записанными в СС2 или СС8, или СС16. Существует специальная программа, размещенная в постоянном запоминающем устройстве (ПЗУ), которая переводит числа из СС10 в другие СС и наоборот. Рассмотрим алгоритмы перевода чисел.

2.2.1. Перевод чисел в десятичную сс10

Перевод чисел из любой системе счисления в десятичную наиболее просто осуществить по формуле кодирующего алгоритма, устанавливающего связь между числом и его кодом. Формула имеет вид

an-1an-2...a1a0a-1a-2,...,a-m=an-1qn-1+an-2qn-2+...+

+a1q1+a0q0+a-1q-1+a-2q-2+...+a-mq-m, (2.1)

где ai, - цифра i-го разряда числа; n - число разрядов целой части числа; m - число разрядов дробной части числа; q - основание системы счисления.

Прежде, чем привести примеры перевода чисел, уясним смысл формулы (2.1).

Пусть дано число в десятичной СС N10 =328,16.

Здесь число разрядов целой части числа n=3, число разрядов дробной части числа m=2, основание системы счисления q=10. Тогда на основании (2.1) это число представляется в виде:

a2a1a0a-1a-2=a2102+a1101+a0100+a-110-1+a-210-2,

где a2=3, a1=2, a0=8, a-1=1, a-2=6. Или иначе: 328,16=3102+2101+8100+110-1+610-2.

Теперь уясним алгоритм перевода на примерах.

Пример 1. Дано число в двоичной СС N2=110010,01.

Необходимо это число перевести в десятичную СС. Здесь n=6, m=2, q=2. Тогда на основании (2.1) имеем

N10=125+124+023+022+121+020+02-1+12-2=32+16+0+0+2+0+0+1/4=50,25.

Пример 2. Дано число в восьмеричной СС N8=207,72. Необходимо это число представить в десятичной СС. Здесь n=3, m=2, q=8. Тогда по формуле (2.1) получим:

N10=282+081+780+78-1+28-2=128+0+7+7/8+2/64=135,90625.

Пример 3. Дано число в шестнадцатиричной СС N16=2A5,2. Необходимо число представить в десятичной системе счисления. В данном слечае n=3, m=1, q=16. Тогда по формуле (2.1) получим:

N10=2162+10161+5160+216-1=512+160+5+2/16=667,125.

2.2.2. Перевод чисел из десятичной сс в другие

Алгоритмы перевода целой и дробной части числа различны. Перевод целой части десятичного числа в двоичную (восьмеричную, шестнадцатиричную) СС осуществляется по следующему правилу: число, представленное в десятичной СС, необходимо последовательно делить на основание той системе счисления, в которую переводится число, т.е. на 2 или 8 или 16, фиксируя остатки и частные на каждом делении до тех пор, пока в последнем частном не будет получено число меньше, чем основание СС, т.е. меньше 2 или 8 или 16. Остатки от деления на каждом шаге образуют число в новой СС, если их последовательно записать, начиная с последнего частного.

Пример 4. Дано число в десятичной СС N10=327. Необходимо представить это число в двоичной, восьмеричной и шестнадцатиричной системах счисления.

Выполним процедуры последовательного деления числа N10=327 на 2,8 и 16.

Теперь запишем число 327 в двоичной N2, в восьмеричной N8 и шестнадцатиричной N16 СС:

N2= 101000111; N8= 507; N16= 147.

Перевод правильной десятичной дроби или дробной части смешанного числа в двоичную (восьмеричную, шестнадцатиричную) СС осуществляется по следующему правилу: дробную часть десятичного числа и получаемых частных произведений нужно умножать на основание той СС, в которую осуществляется перевод, т.е. на 2 или 8 или 16 до получения необходимого из условий точности числа разрядов дробной части числа в новой СС. Число в новой СС записывается в виде последовательности цифр целых частей частных произведений, начиная с первого сверху.

Пример 5. Дано дробное число в десятичной СС N10= 0,841. Необходимо это число перевести в двоичную, восьмеричную и шестнадцатиричную системы счисления. Процедуры умножения числа 0,841 на 2, 8 и 16 показаны ниже

0,841 0,841 0,841

x 2 x 8 x 16

1 682 6 728 5046

x 2 x 8 + 841

1 364 5 824 13 456

x 2 x 8 x 16

0 728 6 592 2736

x 2 x 8 + 456

1 456 4 736 7 296

x 2 x 16

0 912 1776

x 2 + 296

1 824 4 736

x 2

1 648

x 2

1 296

Запишем теперь число 0,841 в двоичной N2, восьмеричной N8 и шестнадцатиричной N16 СС:

N2 = 0,11010111; N8 = 0,6564; N16 = 0,D74.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]