Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Arkhiv_v_pomosch / Домашняя работа к семинару 27.docx
Скачиваний:
21
Добавлен:
11.02.2015
Размер:
632.3 Кб
Скачать

Часть 6. (Дополнительная) Вычитание в различных системах счисления.

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

Пример:

Вычитаем поразрядно: 0-1 (занимаем 2) 2-1=1. Пишем 1.

Далее 1 у нас уже занят. поэтому 0-1 (занимаем 2) 2-1=1. Пишем 1.

Следующая единица уже была занята.

Поэтому ответ: 112.

Вычитаем поразрядно: 38-78 (занимаем 8*, 3+8=11. тогда 11-7=4. Пишем 4.

Из тройки единицу уже занимали поэтому 2-2=0. Ничего не пишем.

*Занятый 1 в большем разряде в восьмеричной системе в меньшем разряде равен 8;

Вычитаем поразрядно: С(12)16-816=416. Пишем 4.

916-716=216. Пишем 2.

*В случае займов, аналогично с 8й системой, 1 в большем разряде равен 16ти в меньшем.

Часть 7. Вычитание с переводом в дополнительный код.

Теория:

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

Прямой код. Прямой код числа в двоичной системе счисления совпадает по изoбражению с записью самoгo числа в двоичной системе счисления. Значение

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

Вычитание – это сложение с дополнительным кодом вычитаемого.

a – b => a + dopKod(b)

Чтобы отличать отрицательные числа от положительных первый бит назначается знаковым. Если он равен 0 число положительно, если 1 то соответственно отрицательно.

Алгоритм подготовки вычитаемого к сложению

Преобразовать в дополнительный код и дописать в знаковый бит 1.

Дополнительный код получается в 2 действия.

  1. Поразрядная инверсия числа 10011 -> 01100. Инверсия – это замена 0 на 1, а 1 на 0.

  2. К инвертированному числу надо прибавить 1. 01100 -> 01101

  3. В знаковый бит дописать 1. 01101 -> 101101

Ответ может быть как положителен, так и отрицателен. Определяется знаковым битом.

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

Пример.

110011 – 101101

  1. К уменьшаемому (это первое число) дописать знаковый бит.

Оно положительно, дописываем 0

110011 -> 0110011

    1. Из вычитаемого (второе число) получить дополнительный код

101101 -> 010011

    1. Дописать знаковый бит

010011 -> 1010011

  1. Сложить полученные числа

0110011

1010011

10000110

в знаковом бите 0, значит ответ положителен

Лишние числа отбрасываются.

Дополнение.

Чтобы было сложнее, чуть-чуть про переполнение.

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

Например у нас всего 4 разряда. С их помощью можно записать числа от 0 до 15 или от -8 до 8. Но никто не мешает сложить 7 и 7, надеясь получить 14. А получится что-то другое:)

Признаком переполнения служат 2последних переноса. Перенос – это числа в уме, те что пишутся мелкими цифрами над столбиком чисел.

Если 2 последних переноса разные 01 10 то все плохо. Переполнение.

Если одинаковые 00 или 11 то все путем.

пример

Дано 4 разряда

-5 – 4

5 в двоичной 101

доп код 101 -> 010

плюс 1 010 -> 011

знаковый бит 011 -> 1011

4 в двоичной 100

доп код 011

плюс 1 100

знаковый бит 100 -> 1100

Складываем 2 числа

в уме - > 10000

1011

+1100

10111

последние два разные, значит переполнение. Ну оно и понятно в знаковом бите 0, типа число положительное и равно 7. -5 – 4 = 7. Ошибка. Переполнение.

Задания:

Часть 1. Выполнить перевод чисел Х10->Х2,8,16.

  1. 39010;

  2. 40010;

  3. 27210;

  1. 15110;

  2. 12910;

  3. 13810;

Часть 2. Выполнить перевод чисел Х2,8,16->Х10.

  1. 10110112;

  2. 1100112;

  3. 1011102;

  1. 2558;

  2. 3138;

  3. 2578;

  1. 5E416;

  2. 17B16;

  3. 2FF16;