
- •7 Форма представления чисел с фиксированной точкой
- •8 Форма представления чисел с плавающей точкой
- •9 Форматы двоично-десятичных чисел
- •10. Машинные коды
- •Прямой код
- •Обратный код
- •. Дополнительный код
- •11 Составные части компьютера
- •12 Логические элементы
- •13. Триггеры
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •14 Асинхронный и синхронный d-триггеры
- •17. Дешифраторы
- •18 Одноразрядный сумматор
- •Полусумматор
- •19. Многоразрядные сумматоры
- •20 Двоично-десятичные сумматоры
- •21 Мультиплексоры
- •22. Демультиплексоры
- •23. Регистры
- •24 Счетчики
- •25 Двоично-десятичные счетчики
- •26 Классификация архитектур системы команд
- •27 Классификация по составу и сложности команд
- •28 Классификация по месту хранения операндов
- •29 Архитектура с выделенным доступом к памяти
- •30 Типы команд
- •Команды пересылки данных
- •Операции с целыми числами
- •Операции с числами в форме с плавающей запятой
- •Логические операции
- •Операции сдвигов
- •Операции с десятичными числами
- •Simd-команды
- •Команды для работы со строками
- •Команды преобразования
- •Команды ввода/вывода
- •Команды управления системой
- •Команды управления потоком команд
- •31 Формат команд
- •Длина команды
- •Разрядность полей команды
- •32 Выбор адресности команд
- •33. Способы адресации операндов
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •34 Косвенная регистровая адресация
- •Адресация со смещением
- •Относительная адресация
- •35 Базовая регистровая адресация
- •Индексная адресация
- •Страничная адресация
- •Блочная адресация
- •36 Распространенность различных видов адресации
- •Способы адресации в командах управления потоком команд
- •37 Функциональная организация фон-неймановской вычислительной машины
- •38 Устройство управления
- •39 Арифметико-логическое устройство
- •40 Основная память
- •Модуль ввода/вывода
- •41. Стандартный цикл команды
- •42 Организация шин
- •43 Шины «процессор-память»
- •Шина ввода/вывода
- •44 Системная шина
- •45 Иерархия шин
- •46 Арбитраж шин
- •47 Протокол шины
- •48 Методы повышения эффективности шин
- •49 Стандартизация шин
10. Машинные коды
Для упрощения арифметических операций числа записываются в специальной форме, называемой машинными кодами. Эти коды позволяют:
свести операцию вычитания к операции сложения;
автоматически получать знак суммы (разности);
выявлять переполнение разрядной сетки.
Существуют следующие коды:
прямой (ПК);
обратный (ОК);
дополнительный (ДК).
Прямой код
Для хранения целых чисел со знаком отводится две ячейки памяти (16 бит), причем старший (левый) разряд отводится под знак числа – если число положительное, то в знаковый разряд записывается 0, если число отрицательное записывается 1.
Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-ти разрядном представлении следующим образом:
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
При представлении целых чисел в n-разрядном представлении со знаком максимальное положительное число (с учетом выделения одного разряда на знак) равно:
.
Обратный код
При сложении чисел с разными знаками фактически необходимо выполнять вычитание, а эта операция является менее удобной, чем сложение. Обратный и дополнительный коды позволяют свести операцию вычитания к операции сложения. В прямом коде это сделать нельзя.
Обратный код отрицательного числа получают из прямого кода путем инвертирования цифровых разрядов (но не знакового). Положительные числа в обратном коде записываются так же, как и в прямом. Например:
Особенностью обратного кода является различное представление цифровых разрядов положительного и отрицательного нулей:
Для получения прямого кода отрицательного числа из обратного кода цифровые (не знаковый) разряды инвертируют.
. Дополнительный код
Для получения дополнительного кода отрицательного числа можно использовать следющий алгоритм:
1. Модуль числа записать прямым кодом в n двоичных разрядах;
2. Получить обратный код числа; для этого значения всех бит инвертировать (все единицы заменить на нули и все нули заменить на единицы);
3. К полученному обратному коду прибавить единицу.
Пример 2.3. Записать дополнительный код отрицательного числа –2002 для 16-ти разрядного компьютерного представления.
Решение.
Прямой код |
|-200210| |
1 0000111110100102 |
Обратный код |
инвертирование |
1 1111000001011012 |
|
прибавление единицы |
1 1111000001011012 + 00000000000000012 |
Дополнительный код |
|
1 1111000001011102 |
Пример 2.4. Выполнить арифметическое
действие
в машинном коде.
Решение. Представим положительное число в прямом, а отрицательное число в дополнительном коде:
Десятичное число |
Прямой код |
Обратный код |
Дополнительный код |
||
3000 |
0 000101110111000 |
|
|
||
-5000 |
1 001001110001000 |
1 110110001110111 |
1 110110001110111 + 000000000000001 1 110110001111000 |
||
Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:
|
|||||
3000-5000 |
|
|
0 000101110111000 +1 110110001111000 1 111100000110000 |
Ответ получен в дополнительном коде, так как в знаковом разряде 1. Переведем полученный дополнительный код в десятичное число:
1. Инвертируем дополнительный код: 0000011111001111;
2. Прибавим к полученному коду 1 и получим модуль отрицательного числа:
0000011111001111 + 0000000000000001 0000011111010000 |
3. Переведем в десятичное число и припишем знак отрицательного числа: -2000.
Положительные числа в дополнительном коде записываются так же, как и в прямом. Нуль в дополнительном коде имеет единственное представление:
Обратный и дополнительный коды с точки зрения простоты выполнения операций над числами равноценны. Однако операции с удвоенной разрядностью в дополнительном коде выполняются проще, поэтому его чаще используют.