✔Целые числа хранятся и обрабатываются в компьютере в двоичном формате. При вводе число записывается в привычной для нас десятичной системе счисления, а компьютер переводит его в двоичный код. В математике, как известно, целыми числами называют множество из натуральных чисел, противоположных им по знаку чисел и числа нуль. В вычислительной технике и программировании в связи с разным внутренним представлением различают целые числа без знака – unsigned integer и целые числа со знаком – signed integer. От представления зависит внутренний формат и диапазон значений чисел. Для хранения целого числа в оперативной памяти выделяется фиксированное число байтов: один, два, четыре или восемь. Целые числа без знака представляются в двоичной системе счисления, при этом диапазон значений изменяется от 0 до 2 n – 1, где n – количество двоичных разрядов. Так, если под число отводится 1 байт (8 бит), то оно может изменяться в диапазоне от 0 до 255, а если 2 байта (16 бит), то от 0 до 65535. Представление числа 58 при однобайтном размещении показано на рис. 5: 5810 = 1110102 и старшие 6-й и 7-й разряды обнуляются.
Целые числа со знаком представляются в компьютере иначе. Один, старший, двоичный разряд обозначает знак числа: 0 – неотрицательное число, 1 – отрицательное. Для кодирования отрицательных значений существует 0 0 1 1 1 0 1 0 Двоичная запись числа 1 0 Разряды: 7 6 5 4 3 2 старшие младшие 38 прямой, обратный и дополнительный код. Положительные значения изображаются одинаково в прямом, обратном и дополнительном кодах – двоичными кодами с цифрой 0 в знаковом разряде.
Прямой код
Правило
Для представления числа в прямом коде n-разрядного формата нужно перевести число в двоичную систему счисления и дополнить слева нулями до n знаков. Так как старший разряд числа отводится для знака, а оставшиеся n – 1 разрядов – для значащих цифр, то в знаковый разряд записать 1, если число отрицательное, и оставить 0, если число положительное. Структура представления числа в прямом коде изображена на рис. 6.
Прямой код имеет следующие недостатки. Во-первых, допускается существование как значения «плюс нуль» так и «минус нуль»: 00000000 и 10000000. Во-вторых, усложняется структура ЭВМ, так как операция сложения двух чисел с разными знаками, должна быть заменена на операцию вычитания меньшей величины из большей и присвоения результату знака большей величины.
Обратный код
Обратный код при суммировании двух чисел с разными знаками позволяет заменить вычитание на обычное сложение, но не решает проблему с «плюс нулем» и «минус нулем».
Правило
Для представления отрицательного числа в обратном коде n-разрядного формата нужно модуль отрицательного числа записать в прямом коде n двоичных разрядах (перевести число в двоичную систему счисления и дополнить слева нулями до n знаков). Значения всех знаков инвертировать (нули заменить единицами, единицы нулями). Дополнительный код
✔В современных компьютерах, как правило, отрицательные числа представляют в виде дополнительного кода. В дополнительном коде, как и в обратном, при суммировании двух чисел с разными знаками не требуется менять операцию сложения на вычитание, но в отличие от прямого и обратного кода нуль не кодируется двумя разными значениями. Диапазон значений целых чисел в дополнительном коде изменяется от –2 n–1 до 2 n–1 – 1. Например, 1 0 0 0 0 0 1 1 7 6 5 4 3 2 1 0 Знак «–» Двоичная запись числа 40 если под число отводится 1 байт, то оно может изменяться от –128 до +127, а если 2 байта, то от – 32768 до +32767.
Правило
Для представления отрицательного числа в дополнительном коде n-разрядного формата нужно представить его в обратном коде и прибавить 1 к последнему разряду числа.
Кодирование вещественных чисел
Вещественные числа в компьютере хранятся и обрабатываются в форме с плавающей запятой. При этом предполагается запись вещественного числа в виде: где m – мантисса числа (|m| < 1); q – основание системы счисления; р – порядок числа (р – целое число). Изобразим структуру представления вещественного числа (рис. 9). Здесь порядок p числа задается в смещенной форме, позволяющей производить операции над порядками как над беззнаковыми числами. Это упрощает операции сравнения, сложения и вычитания порядков.
Смещенный порядок получают следующим образом:
✔ если для задания порядка выделено k разрядов, то к исходному значению порядка p прибавляют смещение, равное 2 k–1 . Например, однобайтный порядок, принимающий значения в диапазоне от –128 до +127, после прибавления смещения будет представляться значениями от 0 до 255. ... ... Знак мантиссы Смещенный порядок Абсолютная величина мантиссы n-1 n-2 1 0 41 Для хранения вещественного числа выделяется 4 байта (формат одинарной точности), 8 байт (формат двойной точности) или 10 байт (расширенный формат). В формате одинарной точности под смещенный порядок отводится 8 бит, а под мантиссу 23 бита; в формате двойной точности под смещенный порядок – 11 бит, под мантиссу – 52 бита; в расширенном формате – 15 бит и 64 бита соответственно.