- •Обработка данных
- •Вентили и триггеры
- •Другие методы хранения данных
- •Шестнадцатеричная система счисления
- •Основная память
- •Массовая память
- •Магнитные диски
- •Компакт-диски
- •Магнитная лента
- •Сохранение и считывание файлов
- •Представление числовых значений
- •Представление изображений
- •Представление целых чисел
- •Двоичный дополнительный код
- •Сложение чисел в двоичном дополнительном коде
- •Двоичная нотация с избытком
- •Наиболее распространенные типы цп
- •Интерфейс между цп и основной памятью
- •Машинные команды
- •Команды передачи данных
- •Арифметические и логические команды
- •Команды управления
- •Концепция хранимой программы
- •Представление машинных команд в виде битовых комбинаций
- •Машинный язык
- •Коды операций
- •Операнды
- •Пример программы
- •Сравнение производительности компьютеров
- •Пример выполнения программы
- •Программы и данные
- •Операции сдвига
- •Арифметические операции
- •Скорость передачи данных
- •Конструкция шины
- •Cisc- и risc-архитектура компьютеров
- •Конвейерная обработка
- •Многопроцессорные машины
- •Машинный язык
Сложение чисел в двоичном дополнительном коде
Чтобы сложить числа, представленные в двоичном дополнительном коде, следует использовать тот же алгоритм, что и для сложения обычных двоичных чисел. Однако нужно учесть тот факт, что в этом коде все представляемые числа, включая и искомый результат, имеют одинаковую длину. Это означает, что, при суммировании представленных в этом коде чисел, любой бит переноса, появляющийся на левом конце результирующего значения при сложении самых старших разрядов, должен отбрасываться. Например, при суммировании битовых комбинаций 0101 и 0010 будет получен результат 0111, а при сложении комбинаций 0111 и 1011 — результат 0010 (0111 + 1011 = 10010, после чего результат усекается до 0010).
Учитывая сказанное выше, рассмотрим три примера сложения, показанные на рис. 1.21. В каждом случае исходные числовые значения сначала преобразовываются в четырехразрядный двоичный дополнительный код, а затем выполняется операция суммирования, согласно описанному выше алгоритму. Полученный результат вновь преобразуется в десятичное значение.
Обратите внимание, если бы при сложении использовался традиционный метод, которому нас обучали еще в начальной школе, то для решения третьей задачи потребовались бы совершенно иные действия (операция вычитания), отличные от используемых в двух предыдущих задачах. Однако за счет преобразования исходных данных в двоичные дополнительные коды можно вычислить результат с помощью одного и того же алгоритма сложения. Таким образом, основным преимуществом двоичного дополнительного кода является то, что операция сложения для любых целых чисел со знаком осуществляется с помощью одного и того же алгоритма.
Рис. 1.21 Сложение чисел в двоичном дополнительном коде
В отличие от учеников начальной школы, которые должны вначале освоить операцию сложения, а затем операцию вычитания, машины, в которых используется двоичный дополнительный код, должны уметь только суммировать числа и изменять знак числа на обратный. Например, операция вычитания 7-5 аналогична операции сложения 7 + (-5). Если машине потребуется вычесть число 5 (представленное битовой комбинацией 0101) из числа 7 (представленного битовой комбинацией 0111), то она сначала поменяет знак числа 5 на -5 (представляемое как битовая комбинация 1011), а затем выполнит операцию сложения для значений 0111 и 1011. В результате будет получено значение 0010, представляющее десятичное число 2. Все это будет выглядеть следующим образом:
Из этого примера видно, что при использовании двоичного дополнительного кода необходимо реализовать электронные схемы только для осуществления операций сложения и отрицания. Этого будет достаточно для выполнения как операций сложения, так и вычитания.
Двоичная нотация с избытком
Теперь давайте рассмотрим двоичную нотацию с избытком, которая является еще одним способом представления целых чисел. Каждое число в этой нотации представлено битовой комбинацией одной и той же длины. Чтобы сформировать представление числа в двоичной нотации с избытком, сначала выбирается длина битовой комбинации, а затем в порядке счета в обычной двоичной системе последовательно записываются все возможные битовые комбинации, имеющие установленную длину. При анализе полученного результата можно заметить, что первая битовая комбинация с единицей в старшем разряде находится почти в середине списка. Именно она выбирается в этой нотации для представления числа 0. Все последующие комбинации с единицей в старшем разряде будут представлять числа 1, 2, 3,... соответственно. Предыдущие комбинации в обратном направлении используются для представления чисел -1, -2, -3,... . Кодовые значения, получаемые при использовании четырехразрядных битовых комбинаций, показаны на рис. 1.22. В частности, число 5 представлено комбинацией 1101, а число -5 представлено комбинацией 0011. (Обратите внимание, что различие между двоичной нотацией с избытком и двоичным дополнительным кодом состоит только в противоположности значений знаковых битов.)
Рис 1.22
Таблица значений, представленная на рис. 1.22, известна как двоичная нотация с избытком восемь. Чтобы понять, почему она так называется, сначала определим значения кодовых комбинаций как обычных двоичных значений, а затем сравним полученный результат с тем значением, которое присвоено каждой кодовой комбинации в двоичной нотации с избытком восемь. В результате мы обнаружим, что соответствующее кодовой комбинации двоичное число превышает представляемое этой комбинацией значение на 8. Например, комбинация 1100 обычно используется для представления числа 12, а в двоичной нотации с избытком восемь эта же комбинация представляет число 4. Это же справедливо и для комбинации 0000, которая обычно представляет число 0, а в данной нотации — число -8. Если же двоичная нотация с избытком создается для комбинаций длиной пять битов, она будет называться двоичной нотацией с избытком 16. В этом случае комбинация 10000 будет представлять число 0, а не 16, как в обычной двоичной системе. Этот же принцип может быть использован для именования любой конкретной схемы двоичной нотации с избытком. Например, схему с тремя двоичными разрядами, представленную на рис. 1.23, можно назвать двоичной нотацией с избытком четыре.
Рис 1.23
Представление дробных значений
В отличие от методов представления целых чисел, задача представления числовых значений с дробной частью требует не только сохранения комбинаций из нулей и единиц, образующих его двоичное представление, но и запоминания позиции точки, отделяющей целую часть от дробной. Наиболее распространенный способ решения этой задачи, именуемый двоичной нотацией с плавающей точкой, состоит в экспоненциальном представлении чисел.
Двоичная нотация с плавающей точкой
Для пояснения принципа, положенного в основу двоичной нотации с плавающей точкой, рассмотрим пример, в котором для хранения числа используется всего один байт. Несмотря на то, что в машинах обычно используются более длинные битовые комбинации, восьмиразрядный формат достаточно наглядно демонстрирует используемые принципы без ненужной избыточности длинных битовых комбинаций.
Для начала давайте условимся считать старший бит знаковым. Как и в предыдущих примерах, значение нуль в знаковом бите означает, что представляемое число неотрицательно, а значение единица, наоборот, указывает, что число является отрицательным. Далее разделим оставшиеся биты байта на две группы, или поля, а именно: поле порядка числа и поле мантиссы. Следующие три бита после знакового бита будем считать полем порядка числа, а оставшиеся четыре бита — полем мантиссы. Описанный выше способ разделения байта представлен на рис. 1.24.
Рис 1.24
Попробуем разобраться с назначением отдельных полей на конкретном примере. Пусть байт содержит битовую комбинацию 01101011. При разложении этой комбинации по элементам описанного выше формата оказывается, что знаковый бит равен 0, поле порядка числа имеет значение 110, а поле мантиссы — значение 1011. Для расшифровки представленного в этом байте значения, прежде всего, выделим мантиссу и поместим плавающую точку слева от нее, как показано ниже:
.1011
Далее выделим значение в поле порядка числа (110) и интерпретируем его как целое трехразрядное число, записанное в двоичной нотации с избытком (см. рис. 1.20). Таким образом, в поле порядка числа закодировано целое число 2. Это означает, что плавающую точку в полученном ранее значении следует переместить на два бита вправо (при отрицательном порядке плавающая точка перемещается влево), после чего будет получен окончательный результат:
10.11
Это значение является двоичным представлением числа 2 3/4. Наконец, определяем, что представляемое число является положительным, поскольку знаковый бит имеет значение 0. Таким образом, мы установили, что битовая комбинация 01101011 в двоичной нотации с плавающей точкой представляет число 2 3/4.
Рассмотрим еще один пример, в котором байт содержит битовую комбинацию 10111100. Выделив мантиссу, получим следующее значение:
.1100
Теперь перенесем плавающую точку на один бит влево, так как в поле порядка содержится значение 011, представляющее число -1. Поэтому окончательный вид закодированного двоичного числа будет следующим:
0.01100
Это двоичное число имеет значение 3/8. Закодированное в значении байта число является отрицательным, поскольку его знаковый бит равен 1. Из этого следует, что битовая комбинация 10111100 в двоичной нотации с плавающей точкой представляет число -3/8.
Для представления чисел в двоичной нотации с плавающей точкой необходимо следовать описанному выше процессу, но уже в обратном порядке. Например, для определения представления в этой нотации числа 1 1/8 сначала необходимо записать его двоичное представление: 1.001. Затем эта битовая комбинация копируется в поле мантиссы слева направо, начиная с самой левой единицы в двоичном представлении числа. Это будет выглядеть так:
_ _ _ _ 1 0 0 1
Теперь остается заполнить поле порядка числа. Представим содержимое поля мантиссы, слева от которого расположена плавающая точка, и определим число разрядов, а также направление, в котором будет перемещаться плавающая точка для получения исходного значения двоичного числа. Обратившись к нашему примеру, можно увидеть, что точка в комбинации .1001 должна быть перемещена на один бит вправо; в результате будет получено исходное значение 1.001. Таким образом, порядок числа равен положительному числу 1, поэтому в соответствующее поле следует поместить значение 101 (представляющее число +1 в двоичной нотации с избытком четыре). Окончательное значение в байте будет выглядеть следующим образом:
0 1 0 1 1 0 0 1
При заполнении поля мантиссы имеется один тонкий момент, на который вы могли не обратить внимание. Правило требует копировать битовую комбинацию двоичного представления числа в поле мантиссы слева направо, начиная с крайней левой единицы. Чтобы прояснить для себя этот нюанс, рассмотрим процесс кодирования числа 3/8, двоичным представлением которого является битовая комбинация .011. В этом случае мантисса должна иметь следующее значение:
_ _ _ _ 1 1 0 0
Любой другой вариант, например представленный ниже, недопустим:
_ _ _ _ 0 1 1 0
Суть в том, что заполнение поля мантиссы всегда должно начинаться с крайней левой единицы в двоичном представлении кодируемого числа. Данное правило исключает возможность различного представления одного и того же значения. Это также говорит о том, что в представлении всех чисел, отличных от нуля, мантисса всегда будет содержать значение 1 в ее старшем разряде. Такое представление чисел называется нормализированой формой. В связи с этим заметим, что представление числа нуль является особым случаем, а соответствующая битовая комбинация представляет собой строку из одних нулей.
ОБРАБОТКА ДАННЫХ
Центральный процессор
Электронные цепи типичного компьютера, предназначенные для выполнения различных операций с данными (например, сложения или вычитания), обычно не связаны с ячейками основной памяти напрямую. Все эти цепи размещаются в изолированной части компьютера, которая называется центральным процессором, или ЦП. Данное устройство состоит из двух частей: арифметико-логического блока, включающего схемы для обработки данных, и блока управления, который содержит схемы, координирующие деятельность всей машины.
Регистры
Для временного запоминания информации в ЦП имеются ячейки, называемые регистрами, которые похожи на ячейки основной памяти. Их можно разделить на регистры общего назначения и специализированные регистры.
Регистры общего назначения используются для временного хранения данных, обрабатываемых в ЦП. В них сохраняются входные данные для схем арифметико-логического блока. Кроме того, эти регистры используются для размещения результатов, полученных при выполнении операций. Для обработки информации, сохраняемой в основной памяти машины, блок управления должен организовать передачу данных из памяти в регистры общего назначения, а также указать арифметико-логическому блоку, в каких регистрах содержатся необходимые входные данные, активизировать соответствующие электронные цепи в этом блоке, а также указать арифметико-логическому блоку тот регистр, в который должен быть помещен результат.