Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Числа в тексте документов представляются в виде символов. Например, число 123708 может быть представлено в виде шести символов, обозначающих цифры. Но в такой кодировке числа не могут участвовать в арифметических операциях. Поэтому в числовых массивах, предназначенных для расчетов, числа кодируются иначе. Например, целое число 123708 в шестнадцатеричной и двоичной системах счисления можно записать так:
123708 = 1E33C (16) = 0001 1110 0011 0011 1100 (2)
Рассматриваемые системы счисления являются позиционными: значение каждой цифры зависит от ее позиции в числе. Позиция 0 (крайняя справа в целой части числа) подразумевает умножение стоящей в ней цифры на основание системы, возведенное в степень 0. Цифра в позиции 1 должна быть умножена на основание системы, возведенное в степень 1 и т.д. Например, цифра 7 в десятичном представлении числа 123708 находится во второй позиции и, следовательно, означает 7 . 102 = 700. Шестнадцатеричное представление числа 123708 можно пояснить следующей записью:
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. Поскольку один из разрядов требуется для кодирования знака числа, то максимальное по модулю целое число, которое можно закодировать в двух байтах, равно 32767, а в четырех байтах - 2147483647. При размещении целого числа на регистре арифметического устройства процессора число «прижимается» к правому краю регистра – считается, что десятичная точка зафиксирована справа от младшего разряда. Поэтому по способу представления целые числа называют еще числами с фиксированной точкой.
Есть особенности кодирования отрицательных целых чисел. Отрицательные целые числа могут кодироваться в обратном или дополнительном коде. Обычно эти особенности поясняют на примере кодирования в одном байте небольших чисел. Запишем в одном байте, например, число 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
Процессор сложит мантиссы и при необходимости нормализует результат, прижав его мантиссу к левому краю разрядной сетки с соответствующей коррекцией порядка. Критическим моментом в этой последовательности операций является денормализация меньшего слагаемого. В этот момент младшие разряды его мантиссы могут вытолкнуться из разрядной сетки, если она недостаточно велика, а это приведет к потере точности результата. Поэтому при выборе форматов накапливаемых и хранимых данных (например, в таблицах баз данных) специалист должен представлять диапазон значений признаков – параметров объектов, часто называемых атрибутами.
Дата публикования: 2014-11-03; Прочитано: 747 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!