- •Глава 3. Представление данных в вычислительных системах
- •2. Представление рациональных чисел
- •100000001100011100111110
- •01010100
- •Число с плавающей двоичной точкой
- •3. Представление текстовых данных
- •5. Представление звуков
- •6. Упаковка данных
- •1. Алгоритмы на основе принципа Азбуки Морзе
- •2. Алгоритмы, широко используемые в современных архиваторах
- •3. Алгоритмы упаковки оцифрованных реальных сигналов
- •7. Контрольные суммы
- •8. Введение в криптографию
Глава 3. Представление данных в вычислительных системах
Современные компьютеры оперируют числовыми данными в двоичной системы счисления, а нечисловые данные (текст, звук, изображение) так или иначе переводят в цифровую форму (оцифровывают).
В силу аппаратных ограничений процессор оперирует числами фиксированной разрядности. Количество двоичных разрядов основного арифметико-логического устройства (АЛУ) называют разрядностью процессора . Процессоры современных систем коллективного пользования имеют 64-разрядные АЛУ, хотя в эксплуатации остается еще довольно много 32-разрядных систем.
1.Введение в двоичную арифметику
Арифметические операции над двоичными числами осуществляются при помощи алгоритма, который в школе изучают под названием “сложение в столбик”.
Таблица 1. Таблица сложения одноразрядных двоичных чисел
0+0=0 |
0+1=1 |
1+0=1 |
1+1=10 |
Из табл.1 видно, что результат сложения двух одноразрядных чисел является двухразрядным (двузначным) числом, а результат сложения двух N-разрядных –N+1-разрядным. Образующийся дополнительный бит называется битом переноса (carrybit).
При операциях над беззнаковыми (неотрицательными) числами бит переноса можно интерпретировать как признак переполнения: т.е. того, что результат нельзя представить числом с разрядностью АЛУ. Двоичное вычитание может выполняться аналогичным образом, только необходимо использовать не таблицы сложения, а таблицы вычитания для двух и трех слагаемых. Операция двоичного вычитания эквивалентна операции двоичного сложения уменьшаемого сдвоичным дополнениемвычитаемого. Двоичное дополнение строится таким образом: все биты числа инвертируются (нули заменяются на единицы, и наоборот), а затем к результату добавляется единица.
Двоичное дополнение сильно упрощает жизнь проектировщика процессоров: вместо двух устройств, сумматора и дифференциатора (по-русски, сложителя и вычитателя), достаточно иметь только сумматор. Кроме того, можно представлять отрицательные числа в двоично-дополнительном коде. При таком представлении признак переполнения называют также признаком потери знака.
Для манипулирования числами в обоих представлениях можно использовать одни и те же команды сложения и вычитания, различие возникает только, когда мы начинаем интерпретировать результаты сравнения таких чисел или сами эти числа (например, переводить их в десятичный формат).
Для команд умножения и деления трюк с двоичным дополнением не проходит, поэтому процессоры, использующие такое представление данных, вынуждены иметь по две пары команд умножения и деления, знаковые и беззнаковые.
Подавляющее большинство современных процессоров используют двоично-дополнительное представление для целых чисел.
Иногда наравне с двоичным используется и специфическое, так называемое двоично-десятичное представлениечисел. Это представление особенно удобно для приложений, которые постоянно вынуждены использовать десятичный ввод и вывод (микрокалькуляторы, часы, телефоны с автоопределителем номера и т.д.) и имеют небольшой объем программной памяти, в которой нецелесообразно помещать универсальную процедуру преобразования чисел из двоичного представления в десятичное и обратно. В таком представлении десятичная цифра обозначается тетрадой, четырьмя битами. Цифры от 0 до 9 представляются своими двоичными эквивалентами, а комбинация битов 1010, 1011, 1100, 1110, 1111 недопустимы. Вместо арифметической операций над такими числами большинство современных микропроцессоров предлагают использовать для их сложения и вычитания обычные бинарные операции, а потом исправлять возникающие при этом недопустимые значения при помощи специальнойкоманды двоично-десятичной коррекции.