Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Кодирование чисел




Числа в тексте документов представляются в виде символов. Например, число 123 708 может быть представлено в виде шести символов, обозначающих цифры. Но в такой кодировке числа не могут участвовать в арифметических операциях. Поэтому в числовых массивах, предназначенных для расчетов, числа кодируются иначе. Например, целое число 123 708 в шестнадцатеричной и двоичной системах счисления можно записать так:

123708 = 1E33C (16) = 0001 1110 0011 0011 1100 (2).

Рассматриваемые системы счисления являются позиционными: значение каждой цифры зависит от ее позиции в числе. Позиция 0 (крайняя справа в целой части числа) подразумевает умножение стоящей в ней цифры на основание системы, возведенное в степень 0. Цифра в позиции 1 должна быть умножена на основание системы, возведенное в степень 1 и т. д. Например, цифра 7 в десятичном представлении числа 123 708 находится во второй позиции и, следовательно, означает 7 . 102 = 700. Шестнадцатеричное представление числа 123 708 можно пояснить следующей записью:

1E33C (16) = 1*16 4 + 14*16 3 + 3*16 2 + 3*16 1 +12*16 0 = 65536+57344+768+48+12 =123708.

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

Целые числа обычно хранятся в двухбайтовом (Integer – целое) или четырехбайтовом (Long – длинное целое) формате. В n байтах можно отобразить целое положительное число от 0 до 256 n – 1. Поскольку один из разрядов требуется для кодирования знака числа, то максимальное по модулю целое число, которое можно закодировать в двух байтах, равно 32 767 , а в четырех байтах – 2 147 483 647. При размещении целого числа на регистре арифметического устройства процессора число «прижимается» к правому краю регистра – считается, что десятичная точка зафиксирована справа от младшего разряда. Поэтому по способу представления целые числа называют еще числами с фиксированной точкой.

Есть особенности кодирования отрицательных целых чисел. Отрицательные целые числа могут кодироваться в обратном или дополнительном коде. Обычно эти особенности поясняют на примере кодирования в одном байте небольших чисел. Запишем в одном байте, например, число 17(10) = 21(8) = 010001(2). При этом знаковый разряд для наглядности будем отделять от остальных семи разрядов запятой. Тогда положительное число 010001(2) в восьмиразрядной сетке будет иметь вид

0,0010001.

В прямом коде то же самое по модулю, но отрицательное число имело бы вид

1,0010001.

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

1,1101110.

Если же применяется дополнительный код, то ещё добавляется 1 в младший разряд:

1,1101111.

Действительные числа кодируются сложнее. По способу представления в разрядной сетке их называют числами с плавающей точкой. Такие числа обычно хранятся в четырехбайтовом (Single – одинарная точность) или в восьмибайтовом (Double – двойная точность) формате. В первом байте кодируются знак числа, знак его порядка и сам порядок, а в остальных байтах мантисса. Например, если бы число 19705.0001 представлялось в разрядной сетке в десятичной системе счисления, то его порядок был бы равен 5, а мантисса 0.197050001, т. е.

19705,0001 = 105 . 0,197050001.

Мантисса в разрядной сетке арифметического устройства как бы прижимается к левому краю, причем ноль перед десятичной точкой и сама точка в разрядную сетку не заносятся, а только подразумеваются. Человек, имеющий дело с вычислениями, должен представлять себе, как такие числа складываются и вычитаются. Пусть к рассмотренному уже числу требуется прибавить число 0.0001. В нормализованном виде, т. е. с порядком и мантиссой, прижатой к левому краю разрядной сетки, оно будет иметь вид 10-3 . 0,1. Чтобы сложить наши числа, процессор сначала увеличит порядок второго числа до 5, сдвинув мантиссу вправо на 8 разрядов, т. е. денормализует второе число с целью выравнивания порядков. Теперь, когда это число примет вид

105 . 0,000000001,

процессор сложит мантиссы и при необходимости нормализует результат, прижав его мантиссу к левому краю разрядной сетки с соответствующей коррекцией порядка. Критическим моментом в этой последовательности операций является денормализация меньшего слагаемого. В этот момент младшие разряды его мантиссы могут вытолкнуться из разрядной сетки, если она недостаточно велика, а это приведет к потере точности результата. Поэтому при выборе форматов накапливаемых и хранимых данных (например, в таблицах баз данных) специалист должен представлять диапазон значений признаков – параметров объектов, часто называемых атрибутами.



Поделиться:

Дата добавления: 2015-09-15; просмотров: 74; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты