- •2. Позиционные системы счисления. Двоичная система счисления.
- •3. Перевод чисел из десятичной в двоичную систему счисления.
- •5. Прямой код
- •6. Обратный код
- •7. Дополнительный код
- •8. Арифметические действия над двоичными числами со знаком. Переполнение. Расширение знаком.
- •9. Формат чисел с плавающей запятой (пз)
- •10. Стандарт ieee 754 представления чисел с пз
- •11. Особые значения чисел с плавающей точкой
- •13. Алгебра логики. Логические переменные. Логические операции. Таблица истинности
- •14. Формы представление логических функций. Сднф. Скнф
- •15. Логические элементы
- •16.Синтез комбинационных схем на основе логических выражений
- •17. Минимизация логических функций. Метод карт Карно
- •18. Комбинационные узлы эвм. Полусумматор. Полный одноразрядный сумматор
- •20. Комбинационные узлы эвм. Компаратор
- •21. Комбинационные узлы эвм. Дешифратор
- •22. Шифратор
- •23. Мультиплексоры
- •24. Реализация логических функций с использованием мультиплексора
- •25. Триггеры. Rs-триггер (latch)
- •28. Последовательностные схемы. Регистры
- •29. Последовательностные схемы. Делители частоты. Счетчики
- •32. Структура плис типа fpga
- •33. Язык описания цифровых устройств vhdl. Основные сведения
- •34. Язык описания цифровых устройств vhdl. Структурное и поведенческое описание проекта на языке vhdl
- •35. Запоминающие устройства. Иерархическая организация памяти
- •37. Арифметический сопроцессор fpu (Intel 8087)
5. Прямой код
Прямой код — способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике. В прямом коде крайний левый разряд является знаковым, а все оставшиеся разряды задают модуль числа. Если значение знакового разряда равно 0 — то число положительное, если 1 — то отрицательное.
В информатике прямой код используется главным образом для записи неотрицательных целых чисел. Его легко получить из представления целого числа в любой другой системе счисления. Для этого достаточно перевести число в двоичную систему счисления, а затем заполнить нулями свободные слева разряды разрядной сетки машины.
Однако, у прямого кода есть два недостатка:
В прямом коде есть два варианта записи числа 0 (например, 00000000 и 10000000 в восьмиразрядном представлении).
Использование прямого кода для представления отрицательных чисел в памяти компьютера предполагает или выполнение арифметических операций центральным процессором в прямом коде, или перевод чисел в другое представление (например, в дополнительный код) перед выполнением операций и перевод результатов обратно в прямой код (что неэффективно).
Выполнение арифметических операций над числами в прямом коде затруднено: например, даже для сложения чисел с разными знаками требуется кроме сумматора иметь специальный блок-«вычитатель», сложность реализации которого такая же, как и обычного сумматора. Кроме того, при выполнении арифметических операций требуется особо обрабатывать значащий разряд, так как он не имеет веса. Также требуется обработка «отрицательного нуля». Таким образом, выполнение арифметических операций над числами в прямом коде потребует сложной архитектуры центрального процессора и в общем является неэффективным.
6. Обратный код
Обратный код двоичного числа является инверсным изображением числа, в которм все разряды исходного числа принимают инверсное значение. Правила преобразования чисел в обратный код следующие:
Выполнение арифметических операций над числами в обратном коде осуществляется на сумматоре обратного кода. Недостаток кода – требуется наличие в сумматоре циклического переноса, что может привести к увеличению времени выполнения арифметических операций.
Примеры выполнения некоторых арифметических:
Т еорема: сумма обратных кодов чисел есть обратный код результата.
7. Дополнительный код
Дополнительный код — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ.
Преобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается; Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.
Пример.
Преобразуем отрицательное число −5, записанное в прямом коде, в дополнительный.
Прямой код числа −5, взятого по модулю: |
101 |
Инвертируем все разряды числа, получая таким образом обратный код: |
010 |
Добавим к результату 1: |
011 |
Допишем слева знаковый единичный разряд: |
1011 |
Для обратного преобразования используется тот же алгоритм. А именно:
Берём код числа −5, записанного в дополнительном коде: |
1011 |
Инвертируем все разряды числа, получая таким образом обратный код: |
0100 |
Добавим к результату 1 и проверим, сложив с дополнительным кодом: |
0101 + 1011 = 10000 |
Пятый разряд выбрасывается: |
101 |