Сложение и вычитание двоичных чисел конспект

Обновлено: 05.07.2024

Микропроцессор выполняет сложение операндов по правилам сложения двоичных чисел. Проблем не возникает до тех пор, пока значение результата не превышает размерности поля операнда. Например, при сложении операндов размером в байт результат не должен превышать число 255. Если это происходит, то результат оказывается неверным. Рассмотрим, почему так происходит.

Самый простой и доступный – использовать команду условного перехода jсс. Эта команда в качестве операнда имеет имя метки в текущем сегменте кода. Переход на эту метку осуществляется в случае, если в результате работы предыдущей команды флаг сf установился в 1. В системе команд микропроцессора имеются три команды двоичного сложения:

1) inс операнд – операция инкремента, т. е. увеличения значения операнда на 1;

2) аdd операнд_1, операнд_2 – команда сложения с принципом действия: операнд_1 = операнд_1 + операнд_2;

3) аdс операнд_1, операнд_2 – команда сложения с учетом флага переноса сf. Принцип действия команды: операнд_1 = операнд_1 + операнд_2 + значение_сГ.

Обратите внимание на последнюю команду – это команда сложения, учитывающая перенос единицы из старшего разряда. Механизм появления такой единицы мы уже рассмотрели. Таким образом, команда аdс является средством микропроцессора для сложения длинных двоичных чисел, размерность которых превосходит поддерживаемые микропроцессором длины стандартных полей.

Сложение двоичных чисел со знаком.

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

2) команду аdс, которая учитывает возможность такого выхода (перенос из младшего разряда).

Другое средство – это регистрация состояния старшего (знакового) разряда операнда, которое осуществляется с помощью флага переполнения оf в регистре ЕFLАGS (бит 11).

Вы, конечно, помните, как представляются числа в компьютере: положительные – в двоичном коде, отрицательные – в дополнительном коде. Рассмотрим различные варианты сложения чисел. Примеры призваны показать поведение двух старших битов операндов и правильность результата операции сложения.

00687 = 00000010 10101111.

31253 = 01111010 00010101.

Следим за переносами из 14 и 15-го разрядов и правильностью результата: переносов нет, результат правильный.

1132 = 11101110 11001100.

Произошел перенос из 14-го разряда; из 15-го разряда переноса нет. Результат неправильный, так как имеется переполнение – значение числа получилось больше, чем то, которое может иметь 16-битное число со знаком (+32 767).

-30566 = 10001000 10011010.

-04875 = 11101100 11110101.

-35441 = 01110101 10001111.

Произошел перенос из 15-го разряда, из 14-го разряда нет переноса. Результат неправильный, так как вместо отрицательного числа получилось положительное (в старшем бите находится 0).

-4875 = 11101100 11110101.

-4875 = 11101100 11110101.

09750 = 11011001 11101010.

Есть переносы из 14 и 15-го разрядов. Результат правильный.

Таким образом, мы исследовали все случаи и выяснили, что ситуация переполнения (установка флага ОF в 1) происходит при переносе:

1) из 14-го разряда (для положительных чисел со знаком);

2) из 15-го разряда (для отрицательных чисел).

И наоборот, переполнения не происходит (т. е. флаг ОF сбрасывается в 0), если есть перенос из обоих разрядов или перенос отсутствует в обоих разрядах.

Итак, переполнение регистрируется с помощью флага переполнения оf. Дополнительно к флагу оf при переносе из старшего разряда устанавливается в 1 и флаг переноса СF Так как микропроцессор не знает о существовании чисел со знаком и без знака, то вся ответственность за правильность действий с получившимися числами ложится на программиста. Проанализировать флаги СF и ОF можно командами условного перехода JС\JNС и JО\JNО соответственно.

Что же касается команд сложения чисел со знаком, то они те же, что и для чисел без знака.

Вычитание двоичных чисел без знака.

Как и при анализе операции сложения, порассуждаем над сутью процессов, происходящих при выполнении операции вычитания. Если уменьшаемое больше вычитаемого, то проблем нет, – разность положительна, результат верен. Если уменьшаемое меньше вычитаемого, возникает проблема: результат меньше 0, а это уже число со знаком. В этом случае результат необходимо завернуть. Что это означает? При обычном вычитании (в столбик) делают заем 1 из старшего разряда. Микропроцессор поступает аналогично, т. е. занимает 1 из разряда, следующего за старшим, в разрядной сетке операнда. Поясним на примере.

05 = 00000000 00000101.

-10 = 00000000 00001010.

Для того чтобы произвести вычитание, произведем.

Воображаемый заем из старшего разряда:

Тем самым, по сути, выполняется действие.

(65 536 + 5) – 10 = 65 531.

0 здесь как бы эквивалентен числу 65536. Результат, конечно, неверен, но микропроцессор считает, что все нормально, хотя факт заема единицы он фиксирует установкой флага переноса сf. Но посмотрите еще раз внимательно на результат операции вычитания. Это же -5 в дополнительном коде! Проведем эксперимент: представим разность в виде суммы 5 + (-10).

5 = 00000000 00000101.

(-10)= 11111111 11110110.

Т. е. мы получили тот же результат, что и в предыдущем примере.

Таким образом, после команды вычитания чисел без знака нужно анализировать состояние флага СЕ Если он установлен в 1, то это говорит о том, что произошел заем из старшего разряда и результат получился в дополнительном коде.

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

1) dес операнд – операция декремента, т. е. уменьшения значения операнда на 1;

2) sub операнд_1, операнд_2 – команда вычитания; ее принцип действия: операнд_1 = операнд_1 – операнд_2;

3) sbb операнд_1, операнд_2 – команда вычитания с учетом заема (флага сi): операнд_1 = операнд_1 – операнд_2 – значение_сГ.

Как видите, среди команд вычитания есть команда sbb, учитывающая флаг переноса сf. Эта команда подобна аdс, но теперь уже флаг сf исполняет роль индикатора заема 1 из старшего разряда при вычитании чисел.

Вычитание двоичных чисел со знаком.

Здесь все несколько сложнее. Микропроцессору незачем иметь два устройства – сложения и вычитания. Достаточно наличия только одного – устройства сложения. Но для вычитания способом сложения чисел со знаком в дополнительном коде необходимо представлять оба операнда – и уменьшаемое, и вычитаемое. Результат тоже нужно рассматривать как значение в дополнительном коде. Но здесь возникают сложности. Прежде всего они связаны с тем, что старший бит операнда рассматривается как знаковый. Рассмотрим пример вычитания 45 – (-127).

Вычитание чисел со знаком 1.

Судя по знаковому разряду, результат получился отрицательный, что, в свою очередь, говорит о том, что число нужно рассматривать как дополнение, равное —44. Правильный результат должен быть равен 172. Здесь мы, как и в случае знакового сложения, встретились с переполнением мантиссы, когда значащий разряд числа изменил знаковый разряд операнда. Отследить такую ситуацию можно по содержимому флага переполнения оf. Его установка в 1 говорит о том, что результат вышел за диапазон представления знаковых чисел (т. е. изменился старший бит) для операнда данного размера, и программист должен предусмотреть действия по корректировке результата.

Вычитание чисел со знаком 2.

-45–45 = -45 + (-45)= -90.

Здесь все нормально, флаг переполнения оf сброшен в 0, а 1 в знаковом разряде говорит о том, что значение результата – число в дополнительном коде.

Вычитание и сложение операндов большой размерности.

Информатика и информационные технологии: конспект лекций

Рис. 29. Сложение операндов большой размерности.

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

В завершение обсуждения команд сложения и вычитания отметим, что кроме флагов сf и оf в регистре еflаgs есть еще несколько флагов, которые можно использовать с двоичными арифметическими командами. Речь идет о следующих флагах:

1) zf – флаг нуля, который устанавливается в 1, если результат операции равен 0, и в 1, если результат не равен 0;

2) sf – флаг знака, значение которого после арифметических операций (и не только) совпадает со значением старшего бита результата, т. е. с битом 7, 15 или 31. Таким образом, этот флаг можно использовать для операций над числами со знаком.

Умножение чисел без знака.

Для умножения чисел без знака предназначена команда.

Как видите, в команде указан всего лишь один операнд-сомножитель. Второй операнд-сомножитель_2 задан неявно. Его местоположение фиксировано и зависит от размера сомножителей. Так как в общем случае результат умножения больше, чем любой из его сомножителей, то его размер и местоположение должны быть тоже определены однозначно. Варианты размеров сомножителей и размещения второго операнда и результата приведены в таблице 10.

Выполнение арифметических действий в любых позиционных системах счисления производится по тем же правилам, которые используются в десятичной системе счисления.

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

Таблица сложения, вычитания и умножения для двоичной системы счисления

Сложение Вычитание Умножение
0 + 0 = 0 0 — 0 = 0 0 ∙ 0 = 0
0 + 1= 1 1 — 0 = 1 0 ∙ 1 = 0
1 + 0 = 1 1 — 1 = 0 1 ∙ 0 = 0
1 + 1 = 10 10 — 1 = 1 1 ∙ 1 = 1

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

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

Двоичное сложение

Пример : 1011,12 + 1010,112

Вычитание двоичных чисел

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

Двоичное деление


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

Цифры двоичного деления


Полученные остатки, 10012 = 910, =1112 = 710, 112 = 310. Искомое число 1011110112 = 37910.

Дидактическая цель: Сформировать навыки выполнения арифметических действий с двоичными числами.

Понимать: правила выполнения арифметических действий в двоичной системе счисления.

Знать: знать правила двоичной арифметики.

Уметь: выполнять арифметические действия в двоичной системе счисления.

Задачи воспитания: воспитание чувства ответственности, самостоятельности и уметь слушать друг друга.

Задачи развития: развивать мышление учащихся посредством анализа, сравнения и обобщения изучаемого материала, самостоятельность, развитие речи, активизировать познавательную деятельность учащихся;

Тип урока: изучение нового материала

Методы обучения: источник получения информации: словесные, наглядные; характер познавательной деятельности: репродуктивный;

Формы обучения: фронтальная, парная.

Средства обучения: словесные средства (слово учителя, запись на доске), техническое обеспечение (компьютер, проектор, смарт - доска)

  1. Организационный момент (2 мин.)
  2. Активизации познавательной деятельности (7 мин.)
  3. Усвоение новых знаний и умений (15 мин.)
  4. Закрепление знаний и умений (8 мин.)
  5. Самостоятельная работа (8 мин.)
  6. Домашнее задание (1 мин.)
  7. Итоги (2 мин.)

Ребята, проходите, пожалуйста, в кабинет и готовьтесь к уроку: доставайте ручки, тетради, портфели повесьте на крючки столов.

(пауза и проверка готовности к уроку)

(немного подождать, что - бы наступила тишина.)

Скажите, пожалуйста, кого нет.

Начнем наш урок.

Учащиеся заходят в класс и готовятся к уроку, достают ручки, тетрадки, вешают портфели.

Учащиеся стоя приветствую учителя.

Говорят кого нет.

Давайте вспомним некоторые моменты про систему счисления.

Кто даст определение системы счисления, чтобы мы понимали, о чем пойдет речь на уроке.

Хорошо, и тогда какими же цифрами вы пользуетесь на уроках математики для записи чисел?

И поэтому СС которой мы сейчас пользуемся, называется…?

Так шло развитие математики, что именно этот набор стал главным, но десятичная система счисления не единственная.

Какие еще мы с вами знаем?

Вот сколько различных СС используются они в разных областях там, где они наиболее удобны и просты для использования.

А сейчас у нас урок информатики и мы работаем с каким электронным устройством, которое помогает нам автоматизировать информационные процессы?

Так же компьютер не случайно называют вычислительной техникой. Даже современные компьютеры, которые на первый взгляд редко выполняют действия с числами, а используются для работы с текстом, звуком, видео- или фотоизображениями, на самом деле обрабатывают числа.

Картинка на слайде.

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

Поэтому мы можем сказать компьютер не только выполняет операции с числами, но и приводят информацию любого вида к числовой информации. И поэтому эффективно использует двоичную систему счисления, в которой используются лишь две цифры. Какие?

Приведите примеры действия или предмета которое имеет только два состояния.

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

СС – способ записи чисел с помощью цифр и правил действий со значениями этих цифр.

Программно-дидактическое обеспечение: ПК, программа Калькулятор.

I. Организационный момент

Приветствие, проверка отсутствующих.

1. Постановка целей урока

10001102 + 10101012;
1000111101112/1011012;
11100011102 – 110102;
1011012 * 1000112

2. Человек не ведет счет в двоичной системе, т.к. она для него не удобна. А кто или что использует ее для счета и почему?

II. Изложение нового материала

Двоичная система счисления

Из всех позиционных систем счисления особенно проста и поэтому интересна двоичная система счисления.

– Чему равно основание двоичной системы счисления? (q = 2)

– Какой вид имеет развёрнутая форма записи двоичного числа? (А2n-1*2 n-1 + …a0*2 0 + a-1*2 -1 +…a-m*2 -m , где аi равно 1 или 0.)

Для того чтобы лучше освоить двоичную систему счисления, необходимо освоить выполнение арифметических действий над двоичными числами.

  • справедливы одни и те же законы арифметики: коммуникативный, ассоциативный, дистрибутивный;
  • справедливы правила сложения, вычитания, умножения и деления столбиком;
  • правила выполнения арифметических операций опираются на таблицы сложения и умножения.

Таблица сложения двоичных чисел проста.

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
1 + 1 + 1 = 11

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

0 – 0 = 0
0 – 1 = 11
1 – 0 = 1
1 – 1 = 0

Вычитание многоразрядных двоичных чисел происходит в соответствии с вышеприведённой таблицей вычитания с учетом возможных заёмов из старших разрядов.

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

При делении столбиком приходится в качестве промежуточных результатов выполнять действия умножения и вычитания.

III. Закрепление изученного

1001001 + 10101 (ответ 1011110);
101101 + 1101101 (ответ 10011010)
11000,11 + 11010,11 (ответ 110011,1)

10001000 – 1110011 (ответ 10101)
1101100 – 10110110 (ответ – 1001010)
110101,101 – 1001,111 (101011,11)

100001*111,11 (ответ: 11111111,11)
10011*1111,01 (ответ: 100100001,11)

1000000 / 1110 (ответ:100)
11101001000/111100 (ответ: 11111)

Оценивание работу учащихся, назвать отличившихся на уроке.

V. Домашнее задание

Выучить правила выполнения арифметических действий в двоичной системе счисления, а так же таблицы сложения, вычитания и умножения в двоичной системе счисления.

  1. 110010 + 111,01;
  2. 11110000111 – 110110001;
  3. 10101,101 * 111;
  4. 10101110/101.

Составьте таблицы сложения и умножения в троичной и пятеричной системе счисления.

Читайте также: