Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции препода / Лекции для 3 курса.doc
Скачиваний:
86
Добавлен:
30.04.2013
Размер:
1.51 Mб
Скачать

1.2. Основные сведения о компьютерах

Предполагается, что читатели знакомы с принципами построения компьютеров, поэтому мы дадим здесь только краткий обзор. Компьютер получает данные от устройств ввода, обрабатывает их и передает оконча­тельные результаты в устройство вывода. Выполняемая обработка опреде­ляется последовательностью команд (инструкций), называемой программой.Программа хранится в памяти компьютера.

Операциями компьютера управляет центральный процессор, или просто процессор. Он выбирает команды из памяти, декодирует их и выполняет операции, предписанные командами. Чтобы выполнять опера­ции, процессор должен посылать управляющие сигналы в другие устройст­ва компьютера. Операции, производимые ими при выполнении команды, состоят из пересылок данных и вычислений. Память компьютера хранит исходные данные для вычислений и результаты.

Чтобы показать, как работает компьютер, рассмотрим выполнение команды сложения. Процессор посылает сигнал в память, запрашивая следующую команду, а память реагирует, передавая команду в процессор. Затем процессор декодирует команду и обнаруживает, что это команда сложения. После этого процессор предпринимает такие действия:

1) посылает сигналы в память, запрашивая передачу двух значений;

2) суммирует полученные значения;

3) посылает сигнал в память о том, чтобы она приняла результат сложения.

Память - это совокупность последовательных ячеек, каждая из которых имеет уникальный адрес. Каждая ячейка состоит из последова­тельности бит. Значения бит (0 или 1) образуют содержимое ячейки.

Регистры, как и память, используются для хранения промежуточных результатов. Но они находятся в составе процессора, поэтому получать значения из регистров проще и быстрее, чем из памяти. Флажки внутри процессора применяются для регистрации того, что в нем происходит. Есть два вида флажков: одни из них (флажки состояния) фиксируют информа­цию об особенностях ранее выполненных команд, а другие (флажки управления) управляют действиями процессора. Пример флажка состоя­ния - флажок, показывающий, не является ли результат для компьютера слишком большим. Примером флажка управления служит флажок, застав­ляющий компьютер выполнять команды с меньшей скоростью. Может оказаться, что флажок одновременно является и флажком состояния, и флажком управления; примером может служить флажок NT процессора 80286.

1.3. Представление чисел

Мы привыкли представлять целые числа в виде последовательностей десятичных цифр, например 365: три сотни, шесть десятков и пять единиц. Такое представление называется представлением с основанием десять. Целые числа в компьютерах обычно представляются последовательностя­ми двоичных цифр (бит), например 11010. Такое представление в двоичной системе обозначает: 1 - шестнадцать, 1 - восемь, 0 - четыре, 1 - два и 0 -нуль. Двоичные числа можно складывать, вычитать, умножать и делить, не превращая их в десятичные, если помнить о том, что 1 плюс 1 равно 10 (1 -два и 0 - нуль), а не 2. Приведем пример:

+1001 (двоичное представление девяти)

0101 (двоичное представление пяти)

1110 (двоичное представление четырнадцати)

Конечно, мы запутаемся в длинных последовательностях двоичных цифр, но компьютеры в них не путаются. Например, 10110101 есть двоичное представление десятичного числа 181. Чтобы упростить действия с двоич­ными числами, их цифры группируют по четыре бита. После этого каждая группа представляется одним символом в соответствии с табл. 1.1. Напри­мер, число 10110101 сокращенно записывается как В5. Такое представле­ние называется шестнадцатеричным числом; если бы мы рождались с шестнадцатью пальцами на руках, то пользовались бы именно такими числами.

Таблица 1.1 Шестнадцатеричное представление

Группа из 4 бит

Шестнадцатеричная цифра

Значение

0000

0

Нуль

0001

1

Один

0010

2

Два

0011

3

Три

0100

4

Четыре

0101

5

Пять

0110

6

Шесть

0111

7

Семь

1000

8

Восемь

1001

9

Девять

1010

10

Десять

1011

11

Одиннадцать

1100

12

Двенадцать

1101

13

Тринадцать

1110

14

Четырнадцать

1111

15

Пятнадцать

Двоичная запись очень удобна для представления положительных чисел и нуля. Но при переходе к отрицательным числам потребуется дополнительный механизм для указания знака числа. Проще всего исполь­зовать для знака старший (левый) бит числа, например:

0000 0100 (обозначает +4)

1000 0100 (обозначает -4)

0111 1111 (обозначает +127)

1111 1111 (обозначает -127)

У такого представления, называемого прямым кодом, имеется один серьезный недостаток: для него потребуются специальные арифметические правила. Покажем это на примере использования двоичной арифметики для вычитания +1 из 0 с ожидаемым получением -1:

-0000 0000 (0 в прямом коде)

0000 0001 (+1 в прямом коде)

1111 1111 (-127 в прямом коде)

При использовании для знаковых чисел (как и для беззнаковых) обычной двоичной арифметики требуется особое представление знаковых чисел, в котором 11111111 представляет -1, а не -127. Кроме того, вычита­ние +1 из -1 должно давать -2. Выполним это вычитание, чтобы посмо­треть, как должно выглядеть -2:

11111111 (это -1)

00000001 (вычитаем +1)

11111110 (и называем это -2)

Рассмотренное представление называется дополнительным кодом; в этом коде операции сложения и вычитания дают правильный результат в дополнительном коде, например:

+00000011 (+3 в дополнительном коде)

11111110 (-2 в дополнительном коде)

0000 0001 (+1 в дополнительном коде)

В дополнительном коде старший бит неотрицательного (положительно­го или нулевого) числа содержит 0, а отрицательного числа -1. Следова­тельно, как и в прямом коде, этот бит является знаковым.

Знак числа в дополнительном коде можно изменить, если изменить (инвертировать) значение каждого бита и прибавить +1. Например, мы можем получить представление -5 в дополнительном коде из представле­ния +5 в дополнительном коде следующим образом:

+00000101 (+5 в дополнительном коде)

11111010 (+5 с измененными битами)

0000 0001 (+1 в дополнительном коде)

11111011 (- 5 в дополнительном коде)

Необходимо очень осторожно подходить к увеличению длины чисел, представленных в дополнительном коде. Бели 8-битное число в дополнительном коде расширяется до 16 бит (например, для сложения с 16-битным числом в дополнительном коде), нужно подумать, что же поместить в левые 8 бит.

Предположим, что мы хотим прибавить число 0000 0001 (+1 в дополни­тельном коде) к 0000 0000 0000 0011 (+3 в дополнительном коде). Навер­ное, ни у кого не возникает сомнений в том, что здесь следует просто добавить в числе +1 восемь нулей с левой стороны, а затем сложить:

+0000 0000 0000 0011 (+3 в дополнительном коде)

0000 0000 0000 0001 (+1 в дополнительном коде)

0000 0000 0000 0100 (+4 в дополнительном коде)

Однако при необходимости прибавить число 1111 1111 (-1 в дополни­тельном коде) к числу 0000 0000 0000 0011 (+3 в дополнительном коде) следует добавить к числу -1 слева восемь единиц (добавление нулей превратило бы -1 в положительное число). После этого производится сложение:

+0000 0000 0000 0011 (+3 в дополнительном коде)

1111 1111 1111 1111 (-1 в дополнительном коде)

0000 0000 0000 0010 (+2 в дополнительном коде)

Следовательно, расширение 8-битного числа в 16-битное выглядит так:

Значение

8-битное представление

16-битное представление

+1

0000 0001

0000 0000 0000 0001

-1

1111 1111

1111 1111 1111 1111

Таким образом, для расширения числа в дополнительном коде необхо­димо ввести новые биты слева и поместить в каждый из них значение знакового бита. Этот процесс называется расширением со знаком.

Соседние файлы в папке Лекции препода