Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов (1988) (1092085), страница 2
Текст из файла (страница 2)
Так как преобразование чисел между двоичной и шестнадцатеричной системами счисления не представляет труда, то для простоты выкладок будем в дальнейшем рассматривать перевод чисел между шестнад. цатеричиой и десятичной системами счисления. Пусть требуется перевести число из шестнадцатеричной л десятичную систему счисления. В качестве примера выберем число 9АЬР, С83Вг„. Учитывая веса разрядов шестнадцатеричной системы счисления, запишем значение этого числа в десятичной системе счисления: 9АЬР,С83Втн =- (9.!ба+10 16Я-'-Ь 16тчр!5 16о Е целан чясть 612 16-'+8 10 — ".! 3 16 — н-1-11 ! 6-с)то--- С дробяня чнстл == (И9 !Оф- !О). Гб+ 5). Гб+ 15+16-'(!2-(-16-т(8+ !6-т(3+ Гб — ' ! ПВ)„. дробная части целая часть Здесь путем группировки членов вычисление палиномов представлено в форме так называемой схемы Горнера, удобной для программирования и обеспечивающей минимальное число выполняемых операций умножения.
Вычисления в приведенном примере дают следующий результат: 9ДЬР. С83В = 39519, 7821502 Целая часть числа преобразуется точно, дробнан часть — приближенно. В приведенном примере вычисления при нахождении дробной части выполиялнсь с точностью, определиемой семью десятичными разрядами, Рассмотрим обратный перевод чисел нз десятичной в шестнадцатеричную систему счисления. Воспользуемся приведенным выше примером. Теперь будем считать заданным десятичное число 39519, 7821502ы и будем искать его представ.
39519,з == ((9 16+10) !6+5) 16+ !Ь Р можно вывести следующее правило получения цифр шестиадцатеричиого представлеиия. Деление правой части равенства (т. е. целой части задаииого числа) яа 16 дает в частном (9 16+!0) !6+5 и в остатке 15 (т. е. Р); деление получеииого частного иа !6 даст частное 9 16+!0 и остаток 5; делеиие последиего частиого приведет к частному 9 и остатку 10 (т, е. А). Таким образом, последовательно деля на 16 целую часть десятичного числа и образующиеся частные, получаем в последнем частном и остатках цифры всех разрядов шестиадцатеричиого представления целой части числа.
Покажем эти действия по преобразованию десятичиого числа 395!9,з в шестиадцатеричиую систему счисления: 395!9 ) !6 39504 2469 ) 16 15 2464 154 ( 16 Г 5 !44 9 10 А Отсюда 39519за = 9АЬГы. Теперь рассмотрим преобразоваииедробиой части десятичного числа в шестиадцзтеричиую систему счисления. Из равеиства 0 7821502гз = !6 ''(12+16 ' (8+16 '(3+16 т 11))) С В следует, что для получения цифр разрядов дробной части шестнадцатеричного числа (О,С83Вы) иеобходимо последовательно умножать иа !6 дробную часть исходного десятичного числа и дробные части образующихся произведений.При этом целые части этих произведений являются цифрами шестнадцатеричного представления: О, 782!502 !6 12, 5!44032 !6 8, 2304512 16 х 8 6872192 16 16,9955072 !6 х 15 ' 9281152 !6 14, 8498432 Р— ь Š— + Таким образом, 0,782!502и, -— — О,СЗЗАРЕ ...ы 0 СЗЗВдз И в этом случае убеждаемся, что дробные числа преобразуются неточно.
ление в шестнадцатеричной системе счисления. Рассмотрим преобразование це- дой части числа. Из рааеиства Перевод чисел с выполнением операций в двои ч и о й с и с т е м е с ч и с л е н и я. Рассмотрим перевод десятичных чисел в двоичную систему счисления. Для иллюстрации метода перевода выберем десятичное число 937, 568,а, которое представим в следующей форме: 937 568та = (9 !От+3,!От+7,!Ос+5 10 т . 6,10 а+8 10 а)аа = == (9 !О+ 3) 10+7 +10 — т (5+10-' (6+10 — '8)) . целая часть Лробяая часть Представив числа, входящие в правую часть равенства, 4-разрядиымн двончиымн числами, запишем выражения длн преобразования целой и дробной частей: 937те = ((1001 1010+0011) 10!О+0111)„, 9 10 3 10 7 0,568,а =- (((1000:1010+0110):!010+0!01): 1010),.
8 10 6 10 5 10 Получаемые в результате выполнения операций над двоичными числами значения представляют собой двоичные представления соответственно целой и дроб. иой частей исходного числа. Рассмотрим обратный перевод двоичных чисел в десятичную систему счисления. Перевод целых двоичных чисел производится последовательным делением в двоичной системе счисления на число 1010а исходного двоичного и всех абра. зующнхся частных.
При этом последнее частное и возникающие при делении остатки являются двоичными представлениями цифр разрядов искомого десятичного представления числа. Перевод дробного двоичного числа производится последовательным умножением иа двоичное число 10!Ос исходного числа н дробных частей получаемых произведений. Прн этом целые части произведений являются двоичным представлением цифр разрядов искомого десятичного представления дробного числа. Преобразование чисел с помощью сдвиговых р е г н с т р о в, Рассмотрим преобразование двоичных чисел в десятичную систему счислении.
Пусть число, подлежащее преобразованию в десятичную систему счисления, хранится в регистре йа (рис. В.1). Результат преобразования (число в десятичной системе счислении) будем формировать в регистре )(а. Разряды регистра )(а делятся иа 4-разрядные группы К,, К, В, и т. д., каждая из которых предназначена для хранения одной десятичной цифры, представленной в двоичной системе счисления. Рассматриваемый способ преобразования потребует выполнения последовательности операций сдвига влево содержимого регистров )(т н йа с передачей выдвигаемого из регистра Вт содержимого старшего разряда в освобождающийся младший разряд регистра Ря. Двоичное число, выдвигаясь нз регистра Ка, будет вдвигаться в регистр Ка. При этом необходимо учитывать следующую особенность выполнения сдвигов в регистре Йа. Единица, выдвигаемая при сдвиге нз старшего разряда группы )(а, имеет вес 2а = 16.
Однако поступая в группу )(а" (в раз- Реаигтд лг Регигяр ла 0 10 0000 0000 0 00 0 !и а яг Рис В.1. Схема преобразования чисел нз двоичной в двоичяо-кодированную де- сятичную систему счисления 1О Таблица В.! па 0000 0000 ОООО 0000 0000 0000 0000 О О О ! 0010 н 0000 0000 0000 0000 000! 00!О 0101 +00!! ! 000 000! О О 1! 3 цз 0000 0001 ОО(1 011 1 00!1 1010 0100 !00! +001! 1100 +1000 0011 1011 0111 +0011 1010 О! 01 5 1110101 !101011 101011 010!1 10!1 011 1 исходное состояние сдвиг сдвиг сдвиг коррекция сдвиг сдвиг коррекция сдвиг коррекция сдвиг коррекция сдвиг ряд десятков), эта единица будет иметь вес 10. Таким образом, црн передаче единицы из )(; в )(з" происходит потеря 6 единиц.
Дли компенсации этой потери потребуется прибавить 6 единиц к содержимому )1 з. Можно показать, что выдвижение единицы из любой 4-разрядной группы регистра Кз требует коррекции содержимого этой группы путем прибавления 6 единиц. Такая же коррекция требуется н в случае, когда после сдвига в 4.разрядной группе возникает число, большее или равное 1О. В этом случае прибавление 6 единиц вызывает перенос нэ старшего разрида группы, который необходимо прибавлить к содержимому следующей 4.разрядной группы. Более удобным оказываетси способ, при котором коррекция производится ие после сдвига, а до выполнения сдвига влево.
В этом случае коррекция осуществляется прибавлением числа 3 (в результате сдвига оно удваивается и принимает значение 6), а признаком необходимости коррекции ивляетсн наличие в 4.разрядной группе числа, большего нли равного 5 !после сдвига это число оказывается большим нлн равным 10). При этом передача единицы в следующую 4-разрядную группу осуществлиетсн только путем передачи переноса, возникающего в процессе сдвига (т. е. исключаетси необходимость прибавлении единицы к содержимому группы, как в случае, когда коррекции выполняется после операции сдвига).
Если число разрядов регистра )(з равно л, то преобразование завершается после и-кратного выполнения сдвига, В табл. В.1 показан процесс преобразования числа )у=1110101!з в десятичное представление 236гз. На рнс. В.2 представлена схема алгоритма преобразования рассмотренным способом чисел иэ двоичной системы счислении в десятичную. Рассмотрим обратное преобразование числа из десятичной системы счислении в двоичную. Очевидиц, такое преобразование может быть осуществлено при использовании описанных выше действий, выполняемых в обратном порядке: осуществляется серия сдвигов вправо содержимого регистров )сз и )ст (рнс. В.3) с коррекцией результата после каждого сдвига. Коррекции выполняется путем вычитания трех единиц, если содержимое 4-разрядной группы окажется больше 11 Региьпр Уг Регисгяр Уг пппапппп пг пг пата пп» гг' я"' 7 Рис.
В.З. Схема преобразования чисел из двоично-кодированной десятичной в дво- ичную систему счислеиия 12 Рис. В.2. Схема алгоритма преобра- зования чисел из двоичной в деситич- иую систему счисления Рис. Вхй Схема алгоритма преобразования чисел из десятичной в двоичную систему счисления тпб Ч В.У йз о!о! йт оо!о йз оо!! исходное состояние сдвиг ! о ! о О О 1 ! о!!! !о! ! ОО1! !ооо !!оо оо!! !оо! о!оо !о!о оо!! о!!! оо!! ооо! оооо ооо! ооо! коррекция сдвиг !ооо оо!! о!о! оо!о оооо коррекция сдвиг оооо о ! ! коррекция сленг сдвиг оооо оооо ооо! оооо !о!! О!О!! коррекция 1 0 ! О 1 1 сдвиг 1 1 О 1 О 1 ! сдвиг 1 1 ! О 1 О ! 1 сдвиг 0000 0000 0000 0000 0000 0000 нли равно 8. Поясним необходимость в такой коррекции.
Указаяиое условие аыполняетси, если происходит передача единицы из младшего разряда соседней еле. ва группы в старший разрнд данной 4-разрядной группы. При этом, если, напрн- меР, в пРоцессе сдвига пеРедаетсЯ единица из Цз в Цз, то ее вес в йз был Равен 10, а в результате сдвига его значение должно быть уменьшено в два раза и, следовательно, должно быть равно 5. А так как единица, поступающая в старший разряд группы Цз будет иметь вес 8, то потребуется коррекпия вычитанием возникаю.
щего избытка в три единицы. Если число разрядов в регистре кх равно и, то преобразование завершается после выполнении серии из и сдвигов. В табл. В. 3 показан процесс преобразования десятичного числа 235,е в двоичную систему счисления. На рис. В. 4 показан алгоритм вычислений.