Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория информации - курс лекций.doc
Скачиваний:
432
Добавлен:
13.03.2015
Размер:
4.65 Mб
Скачать

3. Преобразование нормализованных чисел

Подобно задаче о преобразовании целых и дробных чисел, можно поставить задачу о преобразовании P-ичного нормализованного числа вQ-ичное нормализованное число. Практическое значение такого преобразования состоит в том, что в компьютере все вещественные числа хранятся и обрабатываются внормализованномдвоичном представлении. Следовательно, при их вводе в компьютер осуществляется перевод, а при выводе – обратный перевод.

Пусть имеется число . Это число необходимо представить в форме. Очевидно, что преобразование не затронет знака мантиссы и знака порядка числа. Таким образом, для осуществления преобразованиянеобходимо установить соответствие междуи. Разумеется, что

. (12.3)

Для осуществления преобразования можно перейти к естественной форме числа в системе P, перевести число в системуQ, а затем нормализовать полученноеQ-ичное число. Однако в таком варианте действий может теряться точность числа, а также возможно переполнение, если целая часть числа не уместится в отведенную разрядную сетку. Во избежание этого не надо переходить к естественной форме числа. Надо постепенно, шаг за шагом выделять в числестепени числаQ, пока число не примет вид, где. Это позволит избежать громоздких (многоразрядных) записей больших целых частей чисел. Затем числаиможно перевести вQ-ичную форму. Таким образом, процедура перевода выглядит так:

. (12.4)

Пример. Выполнить преобразование.

, где многоточие означает поэтапное выделение степеней двойки. Для порядка числа получаем:, а для мантиссы числа. Таким образом, окончательно получаем:.

Пример. Выполнить преобразование.

, где многоточие означает постепенное выделение степеней десятки.

4. Кодирование и обработка целых чисел без знака

Будем исходить из того, что для записи числа в устройствах компьютера выделяется фиксированное количество двоичных разрядов. Память компьютера имеет байтовую структуру, однако размер одной адресуемой ячейки памяти обычно составляет несколько байт. Например, в IBM-совместимых компьютерах ячейка памяти объединяет 2 байта, то есть 16 двоичных разрядов. Такаякомбинация связанных соседних разрядов, обрабатываемых совместно, называется машинным словом. Для представления числа в арифметико-логическом устройстве процессора, где формируется результат операции, имеется еще один дополнительный одноразрядный регистр памяти – так называемыйрегистр переноса, который можно рассматривать как 17-й бит в результате операции.

Конечный размер разрядной сетки порождает понятие «наибольшее целое число», которого в обычном (немашинном) представлении чисел просто не существует. Если количество разрядов равноk, а основание системы счисления равноP, то изPразличных цифр в сочетаниях поkцифр можно составитьразличных комбинаций, то естьразличных чисел. Так как первое (наименьшее) целое положительное число есть нуль, то есть, то максимальное целое число без знака равно.

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

Целых чисел, удовлетворяющих условию в компьютере не существует, поэтому появление в ходе вычислений чисел, превышающих, должно интерпретироваться как ошибка. В языках программирования тип числа, в частности, задает количество отводимых для записи числа ячеек памяти (следовательно, задается разрядность числа). В языкеPASCALцелые числа без знака, для которых отводится 2 байта (то есть 16 разрядов), определены как типWord. Выход за границувозможен только путем увеличения количества разрядов, отводимых для записи числа, но это порождает новый тип со своим (более высоким) значением.

Рассмотрим, как с беззнаковыми числами выполняются арифметические операции в двоичной системе счисления.

Сложениепроизводится согласно таблице сложения, которая имеет вид:

;;;.

Место в памяти, где сохраняется переносимая в старший разряд единица до того, как она будет использована в операции (то есть перенесена в старший разряд), называется битом переноса.

Пример. Найти сумму чисели.

+

0010011010010100

0011000000111001

00101011011001101

Пример. Найти сумму чисели.

+

1111111111111110

0000000000000011

10000000000000001

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

Умножениепроизводится согласно таблице умножения:

;;;.

Последовательность действий при умножении аналогична используемой при работе в привычной десятичной системе счисления.

Пример. Найти произведение.

+

+

1101 101

1101

0000

1101

1000001

Как и в операции сложения, при умножении чисел с ограниченной разрядной сеткой может возникнуть переполнение. Решается эта проблема рассмотренными выше способами.