| Рассмотрим еще одни пример, в котором байт содержит битовую комбинацию 10111100. Выделив мантиссу, получим следующее значение: .1100 Теперь перенесем плавающую точку на один бит влево, так как в поле порядка содержится значение 011. представляющее число -1. Поэтому окончательный вид закодированного двоичного числа будет следующим: 0.01100 Закодированное в значении байта число является отрицательным, поскольку его знаковый бит равен 1. Из этого следует, что битовая комбинация 10111100 в двоичной нотации с плавающей точкой представляет число - /,. Для представления чисел в двоичной нотации с плавающей точкой необходимо следовать описанному выше процессу, но уже в обратном порядке. Например, для определения представления в этой нотации числа l/i сначала необходимо записать его двоичное представление: 1.001. Затем эта битовая комбинация копируется в поле мантиссы слева направо, начиная с самой левой единицы в двоичном представлении числа. Это будет выглядеть тек: ____1221 Теперь остается заполнить поле порядка числа. Представим содержимое поля мантиссы, слева от которого расположена плавающая точка, и определим число разрядов, а также направление, в котором будет перемещаться плавающая точка для получения исходного значения двоичного числа. Обратившись к нашему примеру, можно увидеть, что точка в комбинации .01100 должна быть перемещена на один бит вправо; в результате будет получено исходное значение 1.001. Таким образом, порядок числа равен положительному числу 1, поэтому в соответствующее поле следует поместить значение 101 (представляющее число • 1 в двоичной нотации с избытком четыре). Окончательное значение в байте будет выглядеть следующим образом: 21211221 При заполнении поля мантиссы имеется один тонкий момент, на который вы могли не обратить внимание. Правило требует копировать битовую комбинацию двоичного представления числа в поле мантиссы слева направо, начиная с крайней левой единицы. Чтобы прояснить для себя этот нюанс, рассмотрим процесс кодирования числа /,. двоичным представлением которого является битовая комбинация .011. В этом случае мантисса должна иметь следующее значение: ____110 0 Любой другой вариант, например представленный ниже, недопустим: ____2112 Суть в том. что заполнение поля мантиссы всегда должно начинаться с крайней левой единицы в двоичном представлении кодируемого числа. Данное правило исключает возможность различного представления одного и того же значения. Это также говорит о том, что в представлении всех чисел, отличных от нуля, мантисса всегда будет содержать значение 1 в ее старшем разряде. Такое представление чисел называется нормализированной формой. В связи с этим заметим, что представление числа нуль является особым случаем, а соответствующая битовая комбинация представляет собой строку из одних нулей. Ошибки усечения значения Давайте рассмотрим неприятную проблему, которая возникает при попытке представить число ?*/, в виде однобайтового кода в двоичной нотации с плавающей точкой. Прежде всего определим двоичное представление числа 21/„ которое имеет вид 10.101. Однако при копировании этого значения в поле мантиссы имеющихся четырех разрядов оказывается недостаточно и самая правая единица в двоичном представлении, имеющая весовое значение теряется. Если не обратить на это внимание и продолжить заполнение поля порядка числа и знакового бита, будет получена комбинация 01101010, которая на самом деле представляет число 21/;, ш не 2s/i- Это явление называется ошибкой усечения, или ошибкой округления. Оно означает, что некоторая часть кодируемого числа теряется, поскольку размер поля мантиссы оказывается недостаточным. Во избежание подобных ошибок можно использовать поле мантиссы большего размера. Как и в случае целых чисел, для представления значений в нотации с плавающей точкой принято использовать комбинации не менее 32 бит, а не 8 бит, как в приведенных выше примерах. Одновременно это позволяет расширить размер поля порядка числа. Но даже при использовании более длинных полей, достигаемая точность представления числовых значений в некоторых случаях оказывается недостаточной. Страница: 1 | 2
Дата публикации: 23.10.2014 (просмотров: 4084)Комментарии на сайте: |