Теоретические основы информатики

Автор работы: Пользователь скрыл имя, 11 Декабря 2010 в 14:59, реферат

Описание работы

Понятие информации и информатики

Файлы: 1 файл

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ.doc

— 856.50 Кб (Скачать файл)

    

Можно убедиться, что 3-битовое представление с избытком является представлением с избытком четыре. 

      Набор битов Значение       Набор битов Значение
          1111     7           111     3
          1110     6           110     2
          1101     5           101     1
          1100     4           100     0
          1011     3           011     -1
          1010     2           010     -2
          1001     1           001     -3
          1000     0           000     -4
          0111     -1      
          0110     -2      
          0101     -3      
          0100     -4      
          0011     -5      
          0010     -6      
          0001     -7      
          0000     -8      
 

    

Рис. 1.12. 4-битовое  и 3-битовое представление с избытком

      1. Хранение  дробей

    

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

        1. Представление с плавающей точкой

    

Рассмотрим  представление чисел с плавающей точкой (floating-point notation) на примере. Для хранения числа будем использовать только 1 байт памяти. В машинах обычно используются более длинные коды, а этот 8-битовый формат является уменьшенным аналогом существующих систем, и позволяет объяснить основные понятия.

    

Сначала, старший  разряд бита назовем знаковым разрядом. Как и раньше, 0 в позиции знакового разряда означает, что число положительное, 1 в позиции знакового разряда означает, что число отрицательное. Затем разделим оставшиеся в байте семь разрядов на две группы или два поля: порядок (exponent field) и мантиссу (mantissa field). Пусть первые три бита после знакового будут порядком, а оставшиеся четыре — мантиссой.

    

Теперь рассмотрим значение каждой из частей на примере. Байт содержит такую последовательность битов: 00101011. Проведем анализ этой последовательности, применяя определения, данные выше: знаковый разряд равен 0, порядок — 010 и мантисса — 1011. Чтобы расшифровать значение, хранящееся в байте, сначала извлечем мантиссу и поместим слева от нее разделительную точку, получим: .1011.

    

                                      

    

                                   Позиции битов

                                                                     

    

 

    

                                                                                                  

    

                                                                                   Мантисса

    

Знаковый разряд        Порядок

    

         Рис. 1.13. Порядок представления дробных  чисел                          

    

Затем извлечем порядок (010) и переведем его как 3-битовое представление с избытком в десятичную систему счисления. В нашем случае код порядка является представлением 2. Переместим разделительную точку на 2 бита вправо (отрицательный порядок означает, что точку нужно перемещать влево). Следовательно, мы имеем последовательность

    

10.11,

которая является двоичной записью дроби 23/4. Затем обращаем внимание на то, что знаковый разряд равен 0, следовательно, перед нами положительное число. Делаем вывод, что в байте 00101011 хранится число 23/4.

    

Рассмотрим еще один пример. Байт имеет последовательность: 10101010.

    

Выписываем мантиссу

    

.1010

и перемещаем точку  на один бит влево, так как порядок (010) в 3-битовом представлении с избытком является кодом числа -2. Имеем последовательность 0101010, которая является кодом 5/32. Знаковый разряд исходной последовательности равен 1, значит, это число отрицательное. Делаем вывод, что последовательность 10101010 является кодом -5/32.

    

Чтобы записать число в представлении с плавающей  запятой, выполним действия, обратные предыдущим. Например, чтобы записать число 11/8, сначала выражаем его в двоичном представлении и получаем 1.001. Затем переписываем эту последовательность в область мантиссы слева направо, начиная с самой левой единицы в двоичной записи. На этом этапе байт выглядит следующим образом: 
                    1001.

    

Теперь нужно  заполнить поле порядка. Для этого  представляем мантиссу с разделительной точкой слева и определяем число битов и направление, в котором нужно передвинуть точку, чтобы получить исходную двоичную запись. В нашем примере, чтобы получить 01011001, нужно передвинуть точку в .1001 на один бит вправо. Следовательно, порядок равен 1, поэтому записываем 101 (код 1 в представлении с избытком 4) в поле порядка. Наконец, записываем в позицию знакового разряда 0, потому что дробь положительная. Окончательный байт выглядит так: 01011001.

    

Наиболее важным в преобразовании является заполнение поля мантиссы. Правило гласит: выписывать последовательность разрядов двоичной записи слева направо, начиная с самой левой 1 в двоичной записи. В качестве примера рассмотрим процесс записи числа 3/8, двоичное представление которого .011. В этом случае мантиссой будет 1100 а не 0110.

    

Мантисса имеет  такой вид, потому что поле мантиссы заполняется, начиная с самой левой единицы, которая появляется в двоичном представлении. Это правило исключает возможность многократной записи одного значения. Оно также означает, что мантисса чисел, не равных нулю, будет всегда начинаться с 1. О таком представлении говорят, что оно нормализованное (normalized form). Обратите внимание, что представление нуля является особым случаем: его представление с плавающей точкой состоит из одних нулей.

        1. Ошибка  усечения

    

Попытаемся записать значение 25/8 в представлении с плавающей точкой, используя для него один байт памяти. Сначала записываем 25/8 в двоичном представлении, получаем код 10.101.

    

Но, когда мы переписываем его в поле мантиссы, нам не хватает места, и самая  правая 1 (которая занимает позицию  с весом разряда  ]/8) теряется.

    

                                               25/8     

Исходная запись 

    

                                           10.101   

Двоичная запись 

    

                                            10 101   

Последовательность  битов

    

    

                              _  _ _ _   1010      

Потерянный бит

    

    

               

Знаковый                         Мантисса                                    

    

                                       Порядок                                                  Рис. 1.14. Ошибка усечения

    

 Если мы на данном этапе будем игнорировать эту проблему и продолжим заполнение поля порядка, то в результате придем к последовательности 01101010, которая является представлением 21/2 вместо 25/8. То, что произошло, называется ошибкой усечения (truncation error), или ошибкой округления (round-off error), и означает, что часть числа потеряна, потому что поле мантиссы недостаточно велико.

    

Если использовать более длинное поле для мантиссы, то количество таких ошибок можно уменьшить.

    

Например, для  хранения чисел в форме представления с плавающей точкой используется, по меньшей мере, 32 бита вместо 8 битов, которые мы использовали здесь. Такой подход позволяет также увеличить поле для порядка числа. Но даже в этом формате представления иногда возникает необходимость более точных расчетов.

    

Другой причиной ошибки усечения может быть явление, с которым мы уже сталкивались в десятичной системе счисления: проблема бесконечных дробей, таких, например, которые появляются, когда  мы пытаемся представить 1/3 в виде десятичной дроби. Некоторые числа просто нельзя точно записать в виде десятичной дроби, независимо от количества цифр, которое мы используем.

    

Десятичная и  двоичная системы счисления различаются  тем, что в двоичной системе существует больше чисел с бесконечным представлением, чем в десятичной. Например, дробь 1/10 является бесконечной в двоичном представлении. Представьте, какие проблемы это повлечет за собой, если неосмотрительный пользователь будет использовать представление с плавающей точкой для того, чтобы хранить и производить операции с деньгами. В особенности, если в качестве единицы измерения он будет использовать рубль, то значение в десять копеек будет записано неточно. В этом случае лучше выбрать единицей хранения данных 1 копейку так, чтобы все значения были целыми и могли быть с достаточной точностью представлены в памяти компьютера при помощи двоичного дополнительного кода.

    

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

    

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

    

21/2 + 1/8 + 1/8.

    

Если мы будем  складывать числа в указанном  порядке, то сначала прибавим 1/8 к 21/2, получим дробь 25/8, двоичная запись которой — 10.101. К сожалению, когда мы сохраняем это число, возникает ошибка усечения, в результате которой полученная нами сумма будет сохранена как 21/2 (что равно одному из слагаемых). На следующем шаге мы прибавляем к этой сумме 1/8. Здесь опять возникает ошибка усечения, в результате которой мы получаем неправильный ответ 21/2.

Информация о работе Теоретические основы информатики