Представление данных в ЭВМ
Вся информация в ЭВМ хранится в виде наборов бит, то есть комбинаций 0 и 1. Числа представляются двоичными комбинациями в соответствии с числовыми форматами, принятыми для работы в данной ЭВМ, а символьный код устанавливает соответствие букв и других символов двоичным комбинациям.
Для чисел имеется три числовых формата:
- двоичный с фиксированной точкой;
- двоичный с плавающей запятой;
- двоично-кодированный десятичный (BCD).
В двоичном формате с фиксированной точкой числа могут быть представлены без знака (коды) или со знаком. Для представления чисел со знаком в современных ЭВМ в основном применяется дополнительный код. Это приводит к тому, что, как показано ранее, отрицательных чисел при заданной длине разрядной сетки можно представить на одно больше, чем положительных. Хотя операции в ЭВМ осуществляются над двоичными числами, для записи их в языках программирования, в документации и отображения на экране дисплея часто используют более удобное восьмеричное, шестнадцатеричное и десятичное представление.
В двоично-кодированном десятичном формате каждая десятичная цифра представляется в виде 4 битного двоичного эквивалента. Существуют две основные разновидности этого формата: упакованный и неупакованный. В упакованном BCD-формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп. Например, число 3904 представляется в виде двоичного числа 0011 1001 0000 0100. В неупакованном BCD-формате каждая десятичная цифра находится в младшей тетраде 8-битной группы (байте), а содержимое старшей тетрады определяется используемой в данной ЭВМ системой кодирования, и в данном случае несущественно. То же число 3904 в неупакованном формате будет занимать 4 байта и иметь вид:
xxxx0011 xxxx1001 xxxx0000 xxxx0100 .
Числа с плавающей запятой обрабатываются на специальном сопроцессоре (FPU - floating point unit), который, начиная с МП I486, входит в состав БИС микропроцессора. Данные в нем хранятся в 80-разрядных регистрах. Управляя настройками сопроцессора, можно изменять диапазон и точность представления данных этого типа (таблица 14.1).
1 байт 1 слово 1 двойное слово | 8 16 32 | 0...255 0...65535 0...4294967295 | АЛУ |
1 байт | 8 | -128...+127 | АЛУ |
1 слово | 16 | -32768...+32767 | FPU |
1 двойное слово | 32 | -2147483648...+2147483647 | |
1 учетверенное слово | 64 | ?( 0.92*1019) | |
действительное число | 32 (1+8+23) | ?( 0.34*1039) | FPU |
с двойной точностью | 64 (1+11+52) | ?( 0.18*10309) | |
с увеличенной точностью | 80 (1+15+64) | ?( 0.12*104933) | |
1 байт неупакованное | 8 | 0...9 | АЛУ |
1 байт упакованное | 8 | 0...99 | АЛУ |
10 байт упакованное | 80 | 0...(99...99)18цифр | FPU |