Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 60
Текст из файла (страница 60)
г) числа в Е-представлении (с плавающей точкой), мантисса которых лежит в диапазоне между — 999999 н +999999, а показатель степени (порядок) Š— от — 37 до +37. д) числа в Р-представлении (Е-представление с двойной точностью), мантисса которых лежит между — 1О" +1 и +10" — 1, а показатель степени Р— между — 37 и +37. Эти формы представления чисел используются во многих диалектах Бейсика, в частности версии расширенного Бейсика.
М1сго5016 Численные выражения, указанные в пп. б и г, имеют длину 4 байт, из которых 23 бит отведены под мантиссу и знак, а 8 бит — под экспоненту Е и знак. Для численных выражений, указанных в пп. в и д, требуется 8 байт, из которых 55 бит (16 десятичных цифр) отводятся под мантиссу и знак, а 8 бит— под показатель степени Р и знак. Если числа и переменные, указанные в п. а, требуется задать в явном виде как целые числа, то для этой цели после соответствующего числа или переменной ставится символ %: Глава б переменные имеют одинарную точность, т. е.
в числовом диапазоне от †9999 до +999999 для представления соответствующих десятичных чисел (б), а для чисел, значения которых оказываются вне указанных границ, применяется Е-представление (г). Последняя значащая цифра в обоих случаях округляется, причем в диапазоне до 5 включительно — с недостатком, а между 6 и 9 — с избытком до 10. Если требуется:явное представление переменных и чисел, как в пп.
б н г (одинарная точность), то его можно указать с помощью восклицательного знака (!), поставленного после соответствующего числа или переменной. Следующая программа иллюстрирует переход от чисел с десятичной точкой (б) к числам в Е-представленни (г): ?ч Е% 10 1!ЧР1)Т Х 20 У=Х+1 30 Х= У 40 РК1!ЧТ Х 50 бОТО 20 Егч0 К13Х (У = Х41) ? 999999 (1000000) 1Е+ 06 К(Пч (У=Х вЂ” !) ? — 999999 — 1Е-~06 ( — 1000000) 1Е+ 06 (1000005) 1.00001Е+ Об — 1Е+ Об — 1.00001Е+ 06 ( — 1000005) (1000015) 1.00002Е+06 — 1.00002Е+06 ( — 1000015) Задается число 999999, которое затем увеличивается на 1 в циклическом режиме повторения.
После 999999 следует число 1000000 (=10'), которое выражается как 1Е+06, а в дей.ствительности как 1.ОООООЕ+06, однако нули, стоящие после десятичной точки, обычно не приводятся. Число 1Е+06 появляется затем еще пять раз, после чего появляется 1.00001Е+06 (10 раз), затем 1.00002Е+06 (10 раз) и т. д. Появление 1Е+06 только пять раз связано с тем, что, начиная с 1000001 и кончая 1000005, каждый раз происходит округление в сторону уменьшения, т. е.
первое округление при- Языки программирования высокого уровня — Бейсик 365 водит к 1000000 =1Е+06, а между 1000005 и 1000015— к 1000010 (=1.0000!Е+6) и т. д. Таким образом, численное выражение после 10' автоматически переходит из представления с десятичной точкой (б) в Е-представление (г). Если каким-либо числам или переменным требуется присвоить двойную точность, то после соответствующего числа или переменной помещается знак ~ (знак номера), например 24$ =ХкФвУчг.
Если числовые величины не определены, то интерпретатор обрабатывает их в некотором оптимизированном представлении либо как десятичные числа с одинарной точностью (б), либо как численные выражения в Е-представлеиии (г) с сохранением той точности, которая требуется для указанных численных выражений. Как уже отмечалось ранее, представление чисел с двойной точностью (используемое в научных расчетах) называется Р-представлением. Следующий пример иллюстрирует переход от числа с десятичной точкой и двойной точностью к Р-представлению: !к!ЕЪ' 10!!ЧР13Т Х !у 20 У!г =Х!!+1 30 Х !з = У !з 40 РК1!ч'Т Х!г 50 СОТО 20 Е!ЧР лк!Лч ? 9999999999999995 9999999999999999 1Р+ !б = 10000000000000000 1Р+ 16 = 10000000000000004 1.00000000000000!Р+ !б =10000000000000005 1.
000000000000002 Р + 1б = 100000000000000 ! 5 Глава 6 В следующей программе переменные точно не определены. В программу вводятся три числа, которые обрабатывает и распечатывает микроЭВМ. Интерпретатор микроЭВМ обычно исследует представление чисел с десятичной точкой (б), а после превышения численного диапазона (б) происходит переход к Е-представлению (г): 10 11ЧР13Т А 20 РК11ЧТ А 30 Е?чР к111ч Ки1Ч к?31ч '. 999999 999999 ? 1000000 1Е+06 ? 32768 32768 1О 1?ЧР13Т ХН, У1Ф 20 РК1г1Т ХФвУФ К11?Ч ? 5555555555 ? 5555555555 3.
086419752746914Р+20 В расширенной версии Бейсика могут быть использованьв семь способов представления чисел: кроме названных выше. пяти добавляются представления в шестнадцатеричной и восьмеричной системах счисления. Чем выше точность представления чисел, тем большее число байтов требуется для пх хранения, в результате чего увеличивается объем ЗУ, используемый для хранения программы. В случае программ большого объема ЗУ необходимо использовать как можно более экономно, т. е., другими словами, следует отдавать предпочтениедвухбайтовому представлению целых чисел. Обработка чисел с более высокой точностью требует значительно большего машинного времени. В частности, по этой причине при управлении каким-либо процессом заданные временнйе ограничения могут быть не выполнены из-за того, что* требуемые данные будут обрабатываться слишком долго. В подобных ситуациях следует пытаться работать как можно больше с целыми числами.
Еще один пример вычислений с использованием чисел в Р-представлении: Язв~ни ирограммирования высокого уровня — Бейсик 367 По-видимому, здесь следует объяснить особенности Е- н Р-представлений несколько подробнее. В представлении с плавающей точкой целые числа рассматриваются как числа с десятичной точкой справа от младшей цифры. Как уже отмечалось выше, при превышении диапазона этого представления автоматически происходит переход к Е-представлению и десятичная точка перемещается в позицию справа от старшей цифры.
Иногда эта точка смещается также и в позицию перед стагшей цифрой. Если переполнение возникает в случае .целого числа из шести цифр, то правильная интерпретация числового значения возможна только при помощи экспоненты +06, располагаемой после Е, так как 1.00000+!О'= = 1000000. В ходе обработки десятичное число, содержащее десятичную точку, часто смещается вправо относительно десятичной точки, ь уменьшение мантиссы компенсируется показателем степени Е по основанию 10. Десятичное число 123.4 превращается при этом в 1.234Е+02.
Второе представление адекватно первому, так как 1.234Х 10'= 123,4. В случае десятичной дроби 0,00123456 старшая цифра, которая не равна О, перемещается влево, занимая позицию слева от запятой, поэтому после Е указывается число разрядов, на которое запятая сдвинулась вправо. С другой стороны, при выполнении этой операции соответствующее число увеличивается, поэтому нужно скорректировать это увеличение, используя отрицательный показатель степени по основанию 10. В данном примере представление вышеуказанной десятичной дроби с плавающей точкой имеет вид: 1.23456Š— 03. Это выражение эквивалентно предыдущему, так как 1.23456Х10 '= = 0.00123456. Перемещение цифр числа в сторону старших разрядов приводит к тому, что в вычислениях, в которых участвуют числа, представленные с плавающей точкой, обычно производится обработка именно старших цифр, появляющихся затем и в качестве результата.
Это связано с тем, что старшая цифра, которая не равна О, находится прн переполнении в старшем разряде соответствующей десятичной цифровой последовательности. Это наблюдается как для целых чисел, так и для чисел с десятичной точкой. В младших разрядах цифры опускаются, после чего'происходит округление. При арифметической обработке представле- звз Глава б ХЕ%~ 10 РК11чТ Х 20 РК11ЧТ 153ПЧО „н Ф, В М";Х 30 Е1ч13 КБХ " .0.31000Е+ 00 О.
31 К131ч ? 3.!ОЕ+01 0.31 К1ЛЧ ? 0.316 0.32 В Бейсике для представления десятичных чисел используется не запятая, а точка, так как запятая служит здесь для другой цели, а именно для разделения чисел или переменных, находящихся на одной строке. Если при выводе административных данных потребуется запятая, то ее следует печатать как отдельный символ, для чего используются операторы, рассмотренные в равд, 6.9.
ние чисел с использованием плавающей точки реализуется в программе наиболее простым способом. Сдвиг десятичной точки и определение требуемой степени 10 как в Е-, так и в 13-представлении обеспечивает интерпретатор. Пользователь- должен только указать точность обработки, и, если отсутствует более подробное определение, интерпретатор использует представление с десятичной точкой и одинарной точностью, а при переполнении численного диапазона происходит автоматический переход к Е-представлению. При выводе на печать числа с плавающей точкой необходимо преобразовывать в общепринятые представления прежде всего в тех ситуациях, когда необходимо выводить административные данные, например результаты оформления накладных.