Представление чисел в памяти компьютера
Компьютер может обрабатывать только информацию, представленную в числовой форме. Вся другая информация (звуки, изображения, показание приборов и т.д.) для обработки на компьютере должна быть преобразована в числовую форму. Двоичная система счисления. Как правило, все числа внутри компьютера представляются с помощью нулей и единиц, а не десяти цифр, как это привычно для людей. Иными словами, компьютеры обычно работают в двойничной системе счисления, поскольку при этом их устройства получаются значительно более простым. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться привычным для людей десятичной форме – все необходимые преобразования могут выполнить программы, работающие на компьютере.
Двоичное кодирование числовой информации. Представление числовой информации в компьютере.
Представление чисел в формате с фиксированной запятой. Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а «запятая» «находится» справа после младшего разряда, то есть вне разрядной сетки.
Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 битов). Например, число А2 = 111100002 будет храниться в ячейке памяти следующим образом:
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Для n-разрядного представления оно будет равно:
2n – 1.
Определим диапазон чисел, которые могут храниться в оперативной памяти в формате целых неотрицательных чисел. Минимальное число соответствует восьми нулям, хранящимся в восьми битах ячейки памяти, и равно нулю. Максимальное число соответствует восьми единицам и равно:
А = 1·27+1·26+1·25+1·24+1·23+1·22+1·21+1·20 = 1·28 – 1 = 25510.
Диапазон изменения целых неотрицательных чисел: от 0 до 255.
Для хранения целых чисел со знаком отводится две ячейки памяти (16 битов), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если отрицательное – 1).
Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-разрядном представлении следующим образом:
Максимальное положительное число (с учетом выделения одного разряда на знак) для целых чисел со знаком в n-разрядном представлении равно:
2n-1 – 1.
Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие.
Дополнительный код отрицательного числа А, хранящегося в n ячейках, равен 2n – |А|.
Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм:
1. Модуль числа записать в прямом коде в n двоичных разрядах.
2. Получить обратный код числа, для этого значения всех битов инвертировать (все единицы заменить на нули и все нули заменить на единицы).
3. К полученному коду прибавить единицу.
Запишем дополнительный код отрицательного числа –2002 для 16-разрядного компьютерного представления:
При n-разрядном представлении числа А в дополнительном коде старший разряд выделяется для хранения знака числа (единицы).
При n-разрядном представлении отрицательного числа А в дополнительном коде старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число
2n–1 – |A|.
Максимальное значение модуля числа А в n-разрядном представлении равно:
|A| = 2n–1.
Тогда минимальное отрицательное число равно:
А = – 2n–1.
Определим диапазон чисел, которые могут храниться в оперативной памяти в формате длинных целых чисел со знаком(для хранения таких чисел отводится четыре ячейки памяти – 32 бита).
Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно:
А = 231 – 1 = 2 147 483 64710.
Минимальное отрицательное целое число равно:
А = – 231 = – 2 147 483 64810.
Достоинством представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций.
Недостатком представления чисел с фиксированной запятой является небольшой диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа.
Представление чисел в формате с плавающей запятой. Вещественные числа хранятся и обрабатываются в компьютере в формате с плавающей запятой. В этом случае положение запятой в записи числа может изменяться.
Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любое число. Так число А может быть представлено в виде:
А = m · qnгде m – мантисса числа;
q – основание системы счисления;
n – порядок числа.
Для единообразия представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию:
1/n ≤ |m| < 1.
Это значит, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля.
Преобразуем десятичное число 555,55 записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой:
555,55 = 0,55555 · 103.
Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3.
Число в формате с плавающей запятой занимает в памяти компьютера 4 (число обычной точности) или 8 байтов (число двойной точности). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы.
Определим максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака – 24 разряда:
Максимальное значение порядка числа составит 11111112 = 12710, и, следовательно, максимальное значение числа составит:
2127 = 1,7014118346046923173168730371588 · 1038.
Максимальное значение положительной мантиссы равно:
223 – 1 ≈ 223 = 2(10 · 2,3) ≈ 10002,3 = 10(3 · 2,3) ≈ 107.
Таким образом, максимальное значение чисел обычной точности вычислений составит 1,701411·1038 (количество значащих цифр десятичного числа в данном случае ограниченно 7 разрядами).