Тема 4. представление данных в компьютере
Компьютерное кодирование чисел
Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел. Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел. Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо:
1) перевести число N в двоичную систему счисления;
2) полученный результат дополнить слева незначащими нулями до k разрядов.
Например, получим внутреннее представление целого числа 1607 в 2-х байтовой ячейке. Переведем число в двоичную систему: 160710 = 110010001112. Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111
Для записи внутреннего представления целого отрицательного числа (-N) необходимо:
1) получить внутреннее представление положительного числа N;
2) обратный код этого числа заменой 0 на 1 и 1 на 0
3) полученному числу прибавить 1
Например, получим внутреннее представление целого отрицательного числа -1607. Воспользуемся результатом предыдущего примера и запишем внутреннее представление положительного числа 1607: 0000 0110 0100 0111. Инвертированием получим обратный код: 1111 1001 1011 1000. Добавим единицу: 1111 1001 1011 1001 - это и есть внутреннее двоичное представление числа -1607.
Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени p, которую называют порядком: R = m * n p.
Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства: 12.345 = 0.0012345x104 = 1234.5x10-2 = 0.12345x102. Чаще всего в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в таком представлении должна удовлетворять условию: 0.1p <= m < 1p. Иначе говоря, мантисса меньше 1 и первая значащая цифра не ноль (p - основание системы счисления В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не хранятся), так для числа 12.345 в ячейке памяти, отведенной для хранения мантиссы, будет сохранено число 12345. Для однозначного восстановления исходного числа остается сохранить только его порядок, в данном примере - это 2.
Двоичная система счисления (двоичный код) - код, в котором для представления информации используются цепочки бит. Для представления целых чисел используются:
¾ - прямой код - знак кодируется нулем для положительных и единицей для отрицательных. 510= 0 000101; -510= 1 000101
¾ - обратный код (или дополнительный - дополненный до единицы) для положительных чисел совпадает с прямым кодом, а для отрицательных получается из соответствующего прямого путем поразрядного обращения каждого бита кроме знакового: -5=1 111010
Данный код позволяет унифицировать сложение и вычитание с оговоркой, что если при суммировании чисел в обратном коде длина результата превысит стандартную длину цепочки, то происходит циклический перенос старшего разряда в младший, например:
(+5) +(-3) =0000101+1111100=1 "0000001"= "0000010"=210.
Для умножения и деления обратный код менее удобен, чем прямой. В основном обратный код нужен для получения дополнительного Дополнительный код (или дополнение до двух) для положительных чисел совпадает с прямым, а для отрицательных чисел получается из обратного кода сложением с 1. Например: -5=1 111011. Преимущества дополнительного кода перед обратным кодом является упрощение суммирования, т.к. не возникает необходимости в циклическом переносе из старшего разряда в младший.