Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Тема: Перевод чисел из одной позиционной системы счисления в другую
Задача перевода чисел из одной позиционной системы счисления в другую является одной из главных в компьютерной арифметике. Ее можно сформулировать следующим образом: требуется перевести некоторое число (X), записанное в позиционной системе счисления с основанием (k1), в такую же систему счисления, имеющую основание (k2). Другими словами: по изображению операнда (X) в системе счисления с основанием (k1) найти изображение (Y) того же операнда в системе с основанием (k2).
. (2.18)
. (2.19)
Существуют 2 группы методов перевода: табличные и расчетные. 1.Табличные методы. В простейшем случае в памяти компьютерной системы хранится таблица соответствия между всеми числами в системах счисления с основаниями (k1) и (k2), а сама процедура перевода сводится к обращению к этой таблице. Плюс табличных методов перевода заключается в высокой скорости перевода. Минус табличных методов перевода заключается в том, что размеры такой таблицы и, следовательно, занимаемый ею объем памяти, часто оказываются технически неприемлемыми. Поэтому с целью уменьшения занимаемого объема памяти в ней хранят только таблицы соответствия цифр заданных систем счисления и весов их разрядов. Перевод чисел осуществляется путем обращения к этим таблицам и выполнения операций умножения и сложения в соответствии с выражением для КЭЧ. Если, например, числа в системе с основанием (k1) представлены (n - разрядами), то по первому варианту размерность таблицы, сохраняемой в памяти, определяется () строками, а по второму варианту - (k1+n+1) строками. 2.Расчетные методы. В общем виде решение задачи перевода можно представить как нахождение коэффициентов (yj) нового ряда, изображающего число в системе счисления с основанием (k2). Тривиальным методом решения является. Основная трудность - в выборе максимальной степени (), которая все еще содержится в числе (X). Все действия должны выполняться по правилам (k1-арифметики), т.е. по правилам исходной арифметики. После нахождения максимальной степени основания проверяют «вхождение» в заданное число всех степеней нового основания, меньших максимального. Каждая из отмеченных степеней может входить в ряд не более раз, что определяется условием:
(2.20) Для перевода операнда (X) в систему с основанием (k2) необходимо записать (X) в форме для вычисления количественного эквивалента, далее заменить цифры (xi) и основания (k1) их эквивалентами в системе с основанием (k2), а потом вычислить полученное выражение по правилам арифметики в системе с основанием (k2). Этот алгоритм удобно использовать в случае, когда (k1< k2), причем (k2) соответствует системе счисления, где просто и " привычно" выполняются операции сложения и умножения (например, десятичной системе). Для упрощения вычислений при этом используют схему Горнера, в соответствии с которой формула для КЭЧ преобразуется путем многократного вынесения за скобки:
Y=(...((xs-1k1+xs-2)k1+xs-3)k1+...+x1)k1+x0+…+(..(((0+x-m) k1-1 + +x-m+1)k1-1+x-m+2)k1-1+...+x-1)k1-1. (2.21)
Отсюда видно, что для получения целой части числа необходимо выполнить (s) шагов вычислений, а для получения дробной - (m). Т.е., алгоритм МНЗ, по существу, состоит из двух алгоритмов, а именно: перевода целого числа, выполняемого в соответствии с рекуррентной формулой
(2.22)
где А0=0, As - целая часть исходного числа в системе счисления с основанием (k2); и перевода дробей по рекуррентной формуле:
(2.23)
где В0=0, Вm - дробная часть исходного числа в системе с основанием (k2 ). Рассмотренный алгоритм не имеет каких-либо теоретических ограничений на область своего применения. Однако при переводе целых чисел в системы с " непривычными" основаниями, особенно в случае (k1> k2), использование этого алгоритма связано с весьма громоздкими вычислениями. Поэтому на практике используют отдельные алгоритмы перевода целых чисел и правильных дробей. В случае (k1> k2). Целое число (X) запишем в системе с основанием (k2) с использованием схемы Горнера:
Y=(…((yr-1k2+yr-2)k2+yr-3)k2+…+y1)k2+y0. (2.24)
Правую часть выражения разделим на величину основания (k2). В результате получим первый остаток (y0) и целую часть:
Y=(…((yr-1k2+yr-2)k2+yr-3)k2+…+y1). (2.25)
Разделив целую часть на(k2), найдем второй остаток(y1). Повторяя процесс деления r раз, получим последнее целое частное, которое, по условию, меньше основания системы счисления (k2) и является старшей цифрой числа, представленного в системе с основанием (k2). Правило перевода целых чисел из одной позиционной системы счисления в другую: - для перевода целого числа в новую систему его надо последовательно делить на основание новой системы счисления до тех пор, пока не получится частное, у которого целая часть равна (0). Число в новой системе счисления записывается из остатков от последовательного деления, причем последний остаток будет старшей цифрой нового числа. Алгоритмперевода целых чисел из одной позиционной системы счисления в другую можно сформулировать следующим образом: - операнд (X) необходимо делить на (k2) по правилам целочисленного деления в исходной системе с основанием (k1) до получения остатка. Если частное от такого деления не нуль, то далее частное рассматривается как делимое и процесс деления на (k2). продолжают. Как только очередное частное станет равным нулю, процесс деления прекращают. Остаток, полученный при первом делении на (k2), представляет собой цифру результата с весом (), остаток от второго деления - цифру результата с весом () и т.д. Последний остаток является старшей цифрой результата. Например: необходимо перевести из десятичной системы счисления в двоичную систему счисления целое число А = 53(10). Решение: произведем последовательное деление исходного числа (53(10)) на основание новой системы счисления (2). Перевод целого числа А = 53(10) из десятичной системы счисления в двоичную систему счисления, приведен на рис. 2.14:
Рисунок 2.14 - Перевод целого числа А = 53(10) из десятичной системы счисления в двоичную систему счисления
Из сформулированного выше правила при перевод целого числа А = 53(10) из десятичной системы счисления в двоичную систему счисления получим: 53(10) – 110101(2). Например: необходимо перевести из десятичной системы счисления в троичную систему счисления целое число А = 53(10). Решение: произведем последовательное деление исходного числа (53(10)) на основание новой системы счисления (3). Перевод целого числа А = 53(10) из десятичной системы счисления в троичную систему счисления, приведен на рис. 2.15:
Рисунок 2.15 - Перевод целого числа А = 53(10) из десятичной системы счисления в троичную систему счисления
Из сформулированного выше правила при перевод целого числа А = 53(10) из десятичной системы счисления в троичную систему счисления получим:
53(10) – 1222(3). Например: необходимо перевести из десятичной системы счисления в пятеричную систему счисления целое число А = 53(10). Решение: произведем последовательное деление исходного числа (53(10)) на основание новой системы счисления (5). Перевод целого числа А = 53(10) из десятичной системы счисления в пятеричную систему счисления, приведен на рис. 2.16:
Рисунок 2.16 - Перевод целого числа А = 53(10) из десятичной системы счисления в пятеричную систему счисления
Из сформулированного выше правила при перевод целого числа А = 53(10) из десятичной системы счисления в пятеричную систему счисления получим:
53(10) - 203(5).
Например: необходимо перевести из десятичной системы счисления в восьмеричную систему счисления целое число А = 53(10). Решение: произведем последовательное деление исходного числа (53(10)) на основание новой системы счисления (8). Перевод целого числа А = 53(10) из десятичной системы счисления в восьмеричную систему счисления, приведен на рис. 2.17:
Рисунок 2.17 - Перевод целого числа А = 53(10) из десятичной системы счисления в восьмеричную систему счисления
Из сформулированного выше правила при перевод целого числа А = 53(10) из десятичной системы счисления в восьмеричную систему счисления получим:
53(10) - 65(8). Например: необходимо перевести из десятичной системы счисления в шестнадцатеричную систему счисления целое число А = 53(10). Решение: произведем последовательное деление исходного числа (53(10)) на основание новой системы счисления (16). Перевод целого числа А = 53(10) из десятичной системы счисления в шестнадцатеричную систему счисления, приведен на рис. 2.18:
Рисунок 2.18 - Перевод целого числа А = 53(10) из десятичной системы счисления в шестнадцатеричную систему счисления
Из сформулированного выше правила при перевод целого числа А = 53(10) из десятичной системы счисления в шестнадцатеричную систему счисления получим:
53(10) - 35(16).
При переводе из не десятичной системы счисления в десятичную систему счисления, то ввиду ее не привычности для человека производство в ней арифметических действий значительно затруднено. В этом случае для преобразования чисел необходимо воспользоваться формулой (2.6):
.
Например: перевести из двоичной системы счисления в десятичную систему счисления целое число А = 110101(2). Решение: Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 110101(2) = 1∙ 25 + 1∙ 24 + 0∙ 23 + 1∙ 22 + 0∙ 21 + 1∙ 20 = 1∙ 32 + 1∙ 16 + 1∙ 25 + 0∙ 8 + 1∙ 4 + 0∙ 2 + 1∙ 1 = 32 + 16 + 0 + 4 + 0 + 1 = 53(10).
Таким образом, получаем: 110101(2) - 53(10). Например: перевести из троичной системы счисления в десятичную систему счисления целое число А = 1222(3). Решение: Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 1222(3) = 1∙ 33 + 2∙ 32 + 2∙ 31 + 2∙ 30 = 1∙ 27 + 2∙ 9 + 2∙ 3 + 2∙ 1 = 27 + 18 + 6 + 2 = 53(10).
Таким образом, получаем: 1222(3)- 53(10). Например: перевести из пятеричной системы счисления в десятичную систему счисления целое число А = 203(5). Решение: Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 203(5) = 2∙ 52 + 0∙ 51 + 3∙ 50 = 2∙ 25 + 0∙ 5 + 3∙ 1 = 50 + 0 + 3 = 53(10).
Таким образом, получаем: 203(5)- 53(10). Например: перевести из восьмеричной системы счисления в десятичную систему счисления целое число А = 65(8). Решение: Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 65(8) = 6∙ 81 + 5∙ 80 = 48 + 5 = 53(10).
Таким образом, получаем: 65(8)- 53(10). Например: перевести из шестнадцатеричной системы счисления в десятичную систему счисления целое число А = 35(16). Решение: Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 35(16) = 3∙ 161 + 5∙ 160 = 48 + 5 = 53(10).
Таким образом, получаем: 35(16)- 53(10). При переводе из недесятичной системы счисления в недесятичную систему счисления с основанием степени двойки, например если необходимо перевести число из двоичной системы счисления в систему счисления, основанием которой является степень двойки, достаточно объединить цифры двоичного числа в группы по столько цифр, каков показатель степени. Например, если перевод осуществляется в восьмеричную систему счисления, то группы будут содержать три цифры (8 = 23), такая группа называется триадой. Если перевод осуществляется в шестнадцатеричную систему счисления, то группы будут содержать четыре цифры (16 = 24), такая группа называется тетрадой. В целой части числа группировка производится справа налево, в дробной части – слева направо. Если в последней группе недостает цифр, то дописываются нули: в целой части – слева, в дробной – справа. Затем каждая группа заменяется соответствующей цифрой новой системы счисления. Например: необходимо из двоичной системы счисления перевести в восьмеричную систему счисления целое число: А = 110101(2). Решение: исходя из вышесказанного, разобьем целое число: А = 110101(2) на триады и получим рис.2.19:
Рисунок 2.19 - Перевод целого числа А = 110101(2) в восьмеричную систему счисления
Таким образом, получаем: 110101(2) - 65(8). Например: необходимо из двоичной системы счисления перевести в шестнадцатеричную систему счисления целое число: А = 110101(2). Решение: исходя из вышесказанного, разобьем целое число: А = 110101(2) на тетрады и получим рис.2.20:
Рисунок 2.20 - Перевод целого числа А = 110101(2) в шестнадцатеричную систему счисления
Таким образом, получаем: 110101(2) - 35(16). При переводе из недесятичной системы счисления в недесятичную систему счисления с основанием степени двойки, например если необходимо перевести число из восьмеричной системы счисления в шестнадцатеричную систему счисления, необходим промежуточный перевод в двоичную систему счисления. Сначала сформировать триады, а затем тетрады. То же самое, если необходимо перевести число из шестнадцатеричной системы счисления в восьмеричную систему счисления необходим промежуточный перевод в двоичную систему счисления. Сначала сформировать тетрады, а затем триады. Например: необходимо из восьмеричной системы счисления перевести в шестнадцатеричную систему счисления целое число: А = 65(8). Решение: исходя из вышесказанного, переведем сначала целое число: А = 65(8) в двоичную систему счисления, разбив его на триады, а затем триады преобразовав в тетрады получим число в шестнадцатеричной системе счисления рис.2.21:
Рисунок 2.21 - Перевод из восьмеричной системы счисления в шестнадцатеричную систему счисления целого числа А = 65(8)
Таким образом, получаем: 65(8) - 35(16). Например: необходимо из шестнадцатеричной системы счисления перевести в восьмеричную систему счисления целое число: А = 35(16). Решение: исходя из вышесказанного, переведем сначала целое число: А = 35(16) в двоичную систему счисления, разбив его на тетрады, а затем тетрады преобразовав в триады получим число в восьмеричной системе счисления рис.2.22:
Рисунок 2.22 - Перевод из шестнадцатеричной системы счисления в восьмеричную систему счисления целого числа А = 35(16) Таким образом, получаем: 35(16) - 65(8). При переводе из десятичной системы счисления двоично-десятичную систему счисления подразумевают, что двоично-десятичная система счисления представляет собой систему с основанием (10), цифры которой закодированы в виде четырехразрядных двоичных чисел (тетрад), либо с естественным порядком весов (8-4-2-1), либо с искусственным порядком весов. Например: необходимо из десятичной системы счисления перевести в двоично-десятичную систему счисления целое число: А = 118(10). Решение: исходя из вышесказанного, при переводе целого десятичного числа: А = 118(10) в двоично-десятичную систему счисления, необходимо разбить его на тетрады рис. 2.23:
Рисунок 2.23 - Перевод из десятичной системы счисления в двоично-десятичную систему счисления целого числа А = 118(10).
Таким образом, получаем: 118(10) - 100011000(2-10). Например: необходимо из двоично-десятичной системы счисления перевести в десятичную систему счисления целое число: А = 100011000(2-10). Решение: исходя из вышесказанного, при переводе целого двоично-десятичного числа: А = 100011000(2-10).в десятичную систему счисления, необходимо разбить его на тетрады рис. 2.24:
Рисунок 2.24 - Перевод из двоично-десятичной системы счисления в десятичную систему счисления целого числа А = 100011000(2-10)
Таким образом, получаем: 100011000(2-10) - 118(10) При переводе из недесятичной системы счисления в недесятичную систему счисления например, если необходимо перевести число из пятеричной системы счисления в троичную систему счисления, необходим промежуточный перевод в десятичную систему счисления. Например: перевести из пятеричной системы счисления в троичную систему счисления целое число А = 203(5). Решение: Исходя из вышесказанного сначала необходимо целое число: А = 203(5) записанное в пятеричной системы счисления, перевести в десятичную систему счисления, а затем полученное число из десятичной системы счисления перевести в троичную систему счисления. Действие №1: А = 203(5) - 10.
А = 203(5) = 2∙ 52 + 0∙ 51 + 3∙ 50 = 2∙ 25 + 0∙ 5 + 3∙ 1 = 50 + 0 + 3 = 53(10).
Действие №2: А = 53(10) – 3, рис.2.25:
Рисунок 2.25 - Перевод целого числа А = 53(10) из десятичной системы счисления в троичную систему счисления
Таким образом, получаем: 203(5) - 1222(3). Правило перевода правильной дроби из одной позиционной системы счисления в другую. Пусть правильная (рх – ичная) дробь А(рх) уже переведена и представлена в новой системе счисления с основанием (р):
А(рх) = а1 ∙ р-1 + а2 ∙ р-2 + а3 ∙ р-3 +….+ аn ∙ р-n. (2.26)
где а1 - целая часть первого произведения; А(рх1) = а2 ∙ р-1 + а3 ∙ р-2 + ….+ аn ∙ р-n+1 – дробная часть первого произведения.
Умножив на (р) дробную часть А(рх1) первого произведения, определим вторую цифру (а2):
А(рх1) = а2 + а3 ∙ р-1 + ….+ аn ∙ р(-n+2). (2.27)
где а1 - целая часть первого произведения.
Для перевода правильной дроби из одной позиционной системы счисления в другую ее надо последовательно умножать на основание новой системы счисления (р) до тех пор, пока в новой дроби не будет нужного количества цифр, которое определяется требуемой точностью представления дроби или цифры последнего произведения должны равняться нулю. Правильная дробь в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем первая целая часть будет старшей цифрой новой дроби. Например: необходимо перевести из десятичной системы счисления в двоичную систему счисления правильную дробь А = 0.375(10). Решение: исходя из вышесказанного произведем последовательное умножение А = 0.375(10) на новое основание системы счисления (2), рис.2.26:
Рисунок 2.26 - Перевод из десятичной системы счисления в двоичную систему счисления правильной дроби А = 0.375(10).
Таким образом, получаем: 0, 375(10) = 0, 0110(2). Если при переводе правильной дроби из одной позиционной системы счисления в другую при последовательном умножении на основание новой системы счисления (р) цифры последнего произведение не равняется нулю, то процесс умножения заканчивается, тогда когда появляется период и в этом случае говорят (приблизительно равно). Правильная дробь в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем первая целая часть будет старшей цифрой новой дроби и. Например: необходимо перевести из десятичной системы счисления в двоичную систему счисления правильную дробь А = 0.35(10). Решение: исходя из вышесказанного произведем последовательное умножение А = 0.35(10) на новое основание системы счисления (2), рис.2.27:
Рисунок 2.27 - Перевод из десятичной системы счисления в двоичную систему счисления правильной дроби А = 0.35(10).
последнее произведение получилось равным (0, 40), а ранее было уже получено произведение (1, 40), следовательно считаем, что начался период. Таким образом, получаем: 0, 35(10) 0, 010110(2). Например: необходимо перевести из двоичной системы счисления в десятичную систему счисления правильную дробь А = 0.0110(2). Решение: в этом случае для преобразования чисел необходимо воспользоваться формулой (2.6). Запишем число (А) в виде суммы произведений степеней основания на соответствующую цифру в десятичной системе счисления:
А = 0.0110(2) = 0∙ 2-1+1∙ 2-2+1∙ 2-3+0∙ 2-4 = 0∙ (1/2)+1∙ (1/4)+ 1∙ (1/8)+ 0∙ (1/16) = (1/4)+(1/8) = (2/8)+(1/8) = (3/8) = 0.375(10).
Таким образом, получаем: 0.0110(2) = 0.375(10).
Для перевода неправильной десятичной дроби в систему счисления с недесятичным основанием необходимо отдельно перевести целую часть и отдельно дробную. Например: необходимо перевести из десятичной системы счисления в двоичную систему счисления неправильную дробь А = 23.125(10). Решение: исходя из вышесказанного необходимо сначала перевести целую часть числа (А) путем последовательного деления на основание новой системы счисления (2) до тех пор, пока не получится частное, у которого целая часть равна (0). При этом число в новой системе счисления записывается из остатков от последовательного деления, причем последний остаток будет старшей цифрой нового числа. А затем перевести дробную часть путем последовательного умножения на основание новой системы счисления (2) до тех пор, пока в новой дроби не будет нужного количества цифр, которое определяется требуемой точностью представления дроби. Тогда дробная часть числа (А) в новой системе счисления записывается из целых частей произведений, получающихся при последовательном умножении, причем первая целая часть будет старшей цифрой новой дроби, рис.2.28:
Рисунок 2.28 - Перевод из десятичной системы счисления в двоичную систему счисления неправильной дроби А = 23.125(10).
Таким образом, получаем: 23.125(10) - 10111.001(2). 2.3 Перевод неправильной восьмеричной (шестнадцатеричной) дроби в двоичную систему счисления Для перевода восьмеричного (шестнадцатеричного) числа в двоичное необходимо каждую цифру исходного числа записать в виде эквивалентного ей трехбитного (четырехбитного) двоичного числа. Например: необходимо перевести из восьмеричной системы счисления в двоичную систему счисления неправильную дробь А = 273.5(8). Решение: исходя из вышесказанного разобьем каждую цифру неправильной восьмеричной дроби на триады и переведем каждую цифру отдельно:
Например: необходимо перевести из шестнадцатеричной системы счисления в двоичную систему счисления неправильную дробь А = 5АЕ.18(16). Решение: исходя из вышесказанного разобьем каждую цифру неправильной шестнадцатеричной дроби на тетрады и переведем каждую цифру отдельно:
Лекция №6 (90-минут)
|