Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

щей запятой осуществляется по методике умножения чисел с фиксированной запятой согласно вычислительной схеме 1 (см. рис. 1.5, а) с коррекцией порядка произведения при каждом очередном переполнении СЧП. После окончания умножения на текущий байт происходит переход к следующему байту, и так до тех пор, пока не будет закончено умножение на все значащие байты целого сомножителя. После этого производятся, если необходимо, дополнение произведения и его запись в БУФЕР. В случае переполнения порядка произведения устанавливается признак переноса CY= 1. Тестовые данные программы УЦПЗ приведены в табл. 2.5.

Табл. 2.5. Тесты умножения для программы УЦПЗ

Представление чисел

шестнадцатеричное

418000-FF=48FF00 418000-FFFF=50FFFF 418000 - 5555 = 4FAAAA 418000-FFOO=50FFOO 44AOO0-AAAA=53D554

1-255=255 1 -65535=65535 1 -21845=21845 1-65280=65280 10-43690=436900



3. программы преобразования представления чисел

3.1. общие сведения

Обработка числовых данных в современных микропроцессорных устойствах производится с минимальными затратами памяти и времени, т. е. наиболее экономичным образом, в случае представления этих данных в двоичной системе счисления. Однако ввод-вывод исходных данных и результатов необходимо осуществлять в привычном и удобном для пользователя десятичном виде, в связи с чем возникает проблема перевода чисел из одной системы счисления в другую. Эта проблема решается программным путем при определенных затратах памяти и времени на преобразования представлений чисел. Если оказывается, что эти затраты велики и, кроме того, процессы ввода-вывода существенно преобладают над вычислительными процессами, целесообразно использовать десятичную, точнее, смешанную двоично-десятичную систему счисления и в процессе обработки данных, снимая тем самым проблему перевода чисел и минимизируя общие затраты на ввод-вывод и вычисления. В общем же случае проблема перевода сохраняется и является типичной для микропроцессорных устройств.

В данной главе рассматриваются алгоритмы и программы преобразования различных форматов беззнаковых целых и дробных чисел с фиксированной запятой, а также чисел с плавающей запятой из R-тиой системы счисления в Р-ичную (и наоборот), в частности преобразования между двоичной и двоично-десятичной системами. Изложение ограничено, за одним исключением, беззнаковыми числами, поскольку перевод любого числа со знаком сводится к переводу его абсолютной величины и присвоению соответствующего знака результату.

Рассмотрим методы перевода чисел с фиксированной запятой из -ичной системы в Р-ичную {RP) и из Р-ич-ной системы в Р-ичную (Р->Р) [17, 47, 53, 64J. Для определенности примем, что R<ZP,B частности R = 2, Р 10.



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

Один из методов перевода RP целых и дробных чисел заключается в непосредственном вычислении Р-ич-ного значения полинома /?-ичного числа, в котором R-ич-ные цифры и основание 10/? записываются Р-ичными цифрами, а операции сложения и умножения выполняются по правилам Р-ичной арифметики:

п-1 п-1

2 ада • Шк-Ар= 2 api PJ>; =0 =0 i (3.1)

Арф = 2 api -10->Лрф = 2 api Rp

=1 1=0

где Opi и Pp-соответственно эквивалентные цифры а,-и основание 10/г, записанные в Р-ичной системе. Например, перевод 2->10 для чисел 1101 и ,1100 имеет вид (102 = = 2,о) :1101= 1 - 2=* + 1 •2 + 0•2 + 1 .2° = 8+4-- 1 = = 13 и ,1100 = 1 -2- + 1 -2---02-= + 0•2- = 0,5 + -- 0,25 = 0,75. Заметим, что, поскольку Р < Р, цифры в Р-ичной и Р-ичной записях полинома (3.1) совпадают, что упрощает перевод. Данный метод в равной мере применим и для обратного перевода РР. Например, перевод 102 для чисел 13 и 0,75 имеет вид (10io= ioio2): : 13,0 = 0001-(1010)+0011 = iioi2 и 0,75 = 0111 X X (1010)- + 0101 • (1010)-=(0,101100...)+0,000011...) = = 0,101111... Пример показывает, что перевод чисел в систему с меньщим основанием (Р < Р) по методу (3.1) достаточно сложен, особенно для дробных чисел.

На практике метод (3.1) используется в основном для переводов целых чисел RP, причем программирование метода упрощается, если полином вычислять по схеме Горнера:

Ар = (.. ((О + а„ ,). Р + а„ 2)Р + ... +a,)R + ао- (3.2)

В этом случае рассмотренный ранее пример перевода 2->10 числа ИОЬ имеет вид Л ю = (((О + I) • 2 + 1) X Х2 + 0)2 + 1 = 13.

В основе второго метода перевода целых чисел Р->Р лежит идея представления фактического значения Р-ич-ного числа эквивалентным Р-ичным полиномом:

Ар =ар(п-)- R- + ... + api R + аро. (3-3)



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [47] 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0066
Яндекс.Метрика