Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-2012 / 1-семестр / Методика / Lab0(cистемы счисления).doc
Скачиваний:
15
Добавлен:
26.03.2015
Размер:
130.05 Кб
Скачать

Сложение двоичных чисел

Вы можете складывать двоичные числа тем же способом, что и десятичные: путём переноса любого избытка из одного столбца в следующий. Например, при сложении десятичных значений 7 и 9 надо перенести 1 в позицию десятков, что обеспечит получение правильного результата – 16. Аналогично, при сложении двоичных значений 1 и 1 Вы должны перенести 1 в позицию “двоек”, что обеспечит правильный результат – 10.

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

1

0

1

1

+

1

1

1

1

1

0

Сложение в крайнем правом столбце (1+1) даёт результат 0 и перенос 1 во второй столбец. С учётом этого переноса, сложение во втором столбце (1+1+1) даёт результат 1 и перенос 1 в третий столбец.

Общие правила двоичного сложения показаны в следующей таблице:

Исходные данные

Результат

Операнд 1

Операнд 2

Перенос

Сумма

Перенос

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

0

0

1

0

0

1

1

0

0

1

1

0

1

1

0

1

0

1

1

1

1

1

1

Представление числа со знаком

До сих пор мы обсуждали двоичное представление чисел без знака. Как уже упоминалось, у чисел без знака каждый бит имеет вес, зависящий от его позиции. Крайний правый (или младший) бит имеет вес 1, а каждый следующий бит имеет вес, вдвое больший, чем предшествующий ему бит. Следовательно, если все восемь бит байта равны нулю, то байт имеет значение 0; если они равны 1, то байт имеет значение 255.

Однако вычисления могут содержать как положительные, так и отрицательные значения, другими словами, числа со знаком. Если байт содержит число со знаком, то его значение представляется только младшими семью битами (0 – 6); старший бит (бит 7) указывает знак числа. Знаковый бит равен 0, если число положительно или равно 0, и 1, если оно отрицательно. На рис. 1.1 показано размещение битов в байтах со знаком и без знака.

Рис. 1. Представление чисел со знаком и без знака

Если байт содержит числа со знаком, то он может представлять положительные значения от 0 (двоичное значение 00000000) до +127 (двоичное значение 01111111) и отрицательные значения от –1 (двоичное значение 11111111) до –128 (двоичное значение 10000000).

Дополнительный код

Почему –1 представляется в двоичном виде как 11111111, а не как 10000001? Дело в том, что отрицательные числа со знаком представляются в дополнительном коде (в форме дополнения до 2). Учёные-программисты ввели дополнительный код, чтобы нуль не имел два различных представления: все нули (“положительный нуль”) и все нули с 1 в позиции знака (“отрицательный нуль”).

Чтобы найти двоичное представление отрицательного числа (т.е. его дополнительный код), надо просто взять его положительную форму, обратить каждый бит (т.е. заменить 0 на 1, а 1 на 0), а затем добавить к полученному результату 1.

Следующий пример показывает, как вычислить двоичное представление числа –32 в дополнительном коде:

00100000

+32

11011111

(обратить каждый бит)

+ 1

(добавить 1)

11100000

(дополнительный код)

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

00101111

(обратить каждый бит)

+ 1

(добавить 1)

00110000

(=16+32=48)

Компилятор языка ассемблера позволяет Вам вводить числа в десятичном виде (со знаком и без знака) и автоматически выполняет все преобразования. Однако иногда Вам может понадобиться интерпретировать отрицательное число, содержащееся в памяти или в регистре, поэтому не мешает знать, как самим выполнить эти преобразования.

Хотя двоичная система и обеспечивает точное представление чисел в памяти, тем не менее, с последовательностью из одних нулей и единиц трудно работать. Кроме того, возрастает вероятность совершить ошибку, поскольку при наборе числа вида 10110101 чрезвычайно легко сделать опечатку.

Соседние файлы в папке Методика