
- •Введение
- •Системы счисления и представление данных
- •Числа конечной точности
- •Системы счисления
- •Преобразование чисел из одной системы счисления в другую
- •Правило замещения
- •Правило деления-умножения
- •Правило деления
- •Правило умножения
- •Упрощенные правила
- •Двоичная арифметика
- •Отрицательные двоичные числа
- •Сложение двоичных чисел
- •Числа с плавающей точкой
- •Принципы представления с плавающей точкой
- •Округление чисел
- •Стандарт ieee 754
- •Организация компьютерных систем
- •Архитектура и структура вычислительных машин
- •Языки, уровни и виртуальные машины
- •Компиляция
- •Интерпретация
- •Виртуальные машины
- •Многоуровневые машины
- •Многоуровневая организация компьютеров
- •Уровень 0
- •Уровень 1
- •Уровень 2
- •Уровень 3
- •Уровень 4
- •Уровень 5
- •Аппаратное и программное обеспечение
- •Структура компьютера
- •Организация памяти вычислительных машин
- •Адреса основной памяти
- •Упорядочение байтов
- •Цифровой логический уровень
- •Вентили и булева алгебра
- •Вентили
- •Булева алгебра
- •Реализация булевых функций
- •Основные цифровые логические схемы
- •Интегральные схемы
- •Комбинационные схемы
- •Мультиплексоры
- •Декодеры
- •Компараторы
- •Арифметические схемы Схемы сдвига
- •Сумматоры
- •Арифметико-логические устройства
- •Тактовые генераторы
- •Защелки
- •Синхронные sr-защелки
- •Синхронные d-защелки
- •Триггеры
- •Регистры
- •Организация большого объема памяти
- •Микроархитектурный уровень
- •Пример микроархитектуры: организация
- •Поток управления
- •Последовательный поток управления и переходы
- •Процедуры
- •Модель памяти
- •Набор команд
- •Пример микроархитектуры: управление микрокомандами
- •Тракт данных
- •Синхронизация тракта данных
- •Работа памяти
- •Микрокоманды
- •Управление микрокомандами
- •Уровень архитектуры команд
- •Уровень команд процессора Pentium II
- •Регистры
- •Выравнивание адресов
- •Типы данных
- •Форматы команд
- •Адресация
- •Непосредственная адресация
- •Прямая адресация
- •Регистровая адресация
- •Косвенная регистровая адресация
- •Базовая адресация
- •Индексная адресация
- •Команды процессора Pentium II
- •Команды перемещения
- •Арифметические команды
- •Двоично-десятичные команды
- •Логические команды
- •Команды сдвига/циклического сдвига
- •Команды тестирования/сравнения
- •Команды передачи управления
- •Команды для операций над цепочками
- •Команды управления флаговым регистром
- •Прочие команды
- •Уровень языка ассемблера
- •Формат оператора в языке ассемблера
- •Команды
- •Операнды
- •Комментарии
- •Директивы
- •Макросы
- •Процесс ассемблирования
- •Архитектуры компьютеров параллельного действия
- •Организация конвейерных и параллельных вычислений
- •Конвейеры
- •Параллелизм на уровне процессоров
- •Мультикомпьютеры
- •Классификация вычислительных платформ, типы процессоров
- •Классификация компьютеров параллельного действия
Преобразование чисел из одной системы счисления в другую
В результате изучения данной темы Вы будете:
знать основные правила, используемые для перевода чисел из одной системы счисления в другую;
уметь использовать упрощенные правила при переводе чисел из двоичной системы счисления в восьмеричную или шестнадцатеричную (и обратно).
Вычислительные машины работают с двоичными кодами, а пользователю удобнее иметь дело с десятичными или шестнадцатеричными. Поэтому возникает необходимость перевода чисел из одной системы счисления в другую.
Преобразование числа Х из системы счисления с основанием q в систему счисления основанием р (преобразование Х(q) → Х(p)) осуществляется по правилу замещения или по правилу деления-умножения на основание системы счисления. Давайте подробней остановимся на этих правилах.
Правило замещения
Реализуется на основании формулы ( 1 .1) и предусматривает выполнение арифметических операций с кодами чисел в новой системе счисления. Поэтому оно чаще всего используется для преобразования чисел из недесятичной системы счисления в десятичную.
Например, выполним преобразование Х(2) → Х(10), если Х(2) = 10101,011:
X(10) = 1•24+0•23+1•22+0•21+l•20+0•2-l+l•2-2+l•2-3 = 21,375
Правило деления-умножения
Предусматривает выполнение арифметических операций с кодами чисел в исходной системе счисления с основанием q, поэтому его удобно применять для преобразования десятичных чисел в любые другие позиционные системы счисления. Правила преобразования целых чисел и правильных дробей различны. Для преобразования целых чисел используется правило деления, а для преобразования правильных дробей – правило умножения. Для преобразования смешанных чисел используются оба правила соответственно для целой и дробной частей числа.
Правило деления
Используется для преобразования целого числа, записанного в q-ичной системе счисления, в р-ичную. В этом случае необходимо последовательно делить исходное q-ичное число и получаемые частные на новое основание р, представленное в p-ичной системе счисления. Деление продолжают до тех пор, пока очередное частное не станет меньше р. После замены полученных остатков и последнего частного цифрами ручной системы счисления записывается код числа в новой системе счисления. При этом старшей цифрой является последнее частное, а следующие за ней цифры соответствуют остаткам, записанным в последовательности, обратной их получению.
Например, выполним преобразование Х(10) → Х(16), если Х(10) = 7038:
Для получения частных и остатков по правилу деления для целой части числа удобно использовать формулу записи, известную под названием «деление в столбик»:
Таким образом, из полученных остатков деления (14, 7, 11, 1, а используя основание 16: E, 7, B, 1) выводим число 1B7E(16).
Правило умножения
Используется для преобразования дробного числа, записанного в q-ичной системе счисления, в р-ичную. В этом случае необходимо последовательно умножать исходную дробь и дробные части получающихся произведений на основание р, представленное в исходной q-ичной системе счисления. Целые числа получаемых произведений, замененные цифрами р-ичиой системы счисления и дают последовательность цифр в новой р-ичной системе.
Умножение необходимо производить до получения в искомом р-ичном коде цифры того разряда, вес которого меньше веса младшего разряда исходной q-ичной дроби. При этом в общем случае получается код приближенно, и всегда с недостатком значения дроби. Поэтому в случае обратного преобразования (р-ичиого кода дроби в q-ичный) результат может не совпадать с исходным значением q-ичной дроби.
Например, выполним преобразование X(10) → X(2), если X(10) = 37,45.
Для целой части (37) используем правило деления, а для получения дробной части числа (0,45) – правило умножения. Применительно к рассматриваемому примеру имеем:
Таким образом, в результате преобразования получаем 37,45(10) = 100101,0111…(2).
Как следует из примера, процесс перевода дробной части можно продолжить до бесконечности. Однако, т.к. компьютеры оперирует числами конечной точности, дроби округляют в соответствии с правилами преобразования и весом младшего разряда исходной дроби.