20 (1006363)

Файл №1006363 20 (Вопросы по разным темам с ответами (программирование))20 (1006363)2017-06-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Билет № 20. Выполнение операций над BCD-числами. Логические операции.

Алгоритмы. Реализация. ( 1)

Машина обрабатывает числа, представленные в двоичной системе счисления (СС). Привычная нам система счисления – десятичная. Т.о. требуется переводить десятичные числа в двоичные и обратно. На это тратиться время. Как уменьшить потери? Можно представлять числа в двоично-десятичной СС.

Перевод десятичного числа в двоично-десятичную СС:

  1. Для представления каждой цифры числа выделяется 4 двоичных разряда (тетрада).

  2. Каждая цифра числа представляется в двоичной СС.

Пример: (35)10 = (0011 0101)DD , (12)10 = (0001 0010)DD

При двоично-десятичном (д/д) кодировании в командах указывается длина операндов (пример: числа 35 и 1120 будут закодированы одним и двумя байтами, соответственно). Знак д/д числа указывается справа и занимает 4 бита.

Сложение.

Если производить сложение чисел, представленных в д/д CC, на обычном сумматоре, то получится неверный результат. Почему? В д/д CC перенос из тетрады возникает, когда в тетраде получается число ≥ 10, а двоичной СС перенос возникает, если в тетраде получилось число ≥ 16. Поэтому при сложение чисел, представленных в д/д CC, на обычном сумматоре надо использовать избыточное кодирование (до начала операции к каждой тетраде одного из операндов прибавляется число 6 (0110)DD). Пример получения избыточного кода: (359)10 = (0011 0101 1001)DD => в избыточном коде: (1001 1011 1111)DD = (9 11 15).

Алгоритм сложения:

  1. Перевести один из операндов в избыточный код: к каждой тетраде операнда прибавляется число 6 (0110)DD

  2. Сложить операнды и зафиксировать тетрады, из которых не было переноса.

  3. В

    Пример: (359)10 + (214)10 = (573)10 . Операнды: (359)10 = (0011 0101 1001)DD ; (214)10 = (0010 0001 0100)DD

    • представим (359)10 в избыточном коде: (1001 1011 1111)DD

    • произведем сложение: (1001 1011 1111 )DD

    + (0010 0001 0100 )DD

    --------------------------

    (1011 1101 0011 )DD - промежуточный результат

    - - + - фиксация наличия переноса

    • скорректируем промежуточный результат: (переносы из тетрады в тетраду запрещены!)

    (1011 1101 0011 )DD

    + (1010 1010 )DD

    --------------------------

    (0101 0111 0011 )DD = (573)10 - результат


    ычесть из тетрад, из которых не было переноса, 6 (т.е. сложить с -6 = (1010)доп. код), с запретом переносов из тетрады в тетраду.

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

Д/д число 25 в дополнительном коде: 100 – 25 = 75.

Алгоритм получения дополнительного кода:

  1. Перевод каждой тетрады в дополнительный код: инверсия и прибавление 1 к младшему разряду младшей тетрады. Пример: (25)10 = (0010 0101)DD => (1101 1011)DD

  2. Получение избыточного кода (отнимем 6 от каждой тетрады): (1101 1011)DD – (0110 0110)DD = (1101 1011)DD + (1010 1010)DD = (0111 0101)DD = (75)10

Вычитание.

Алгоритм вычитания

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

  2. Сложить операнды и зафиксировать переносы.

  3. Определить знак результата: если был перенос из старшей тетрады, то “+”; иначе – “-”.

  4. Коррекция результата:

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

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

Р

Пример: (738)10 - (291)10 = (447)10 . Операнды: (738)10 = (0111 0011 1000)DD ; (291)10 = (0010 1001 0001)DD

  • проинвертируем каждую тетраду числа (-291)10 и прибавим к младшей тетраде единицу: (1101 0110 1111)DD

  • произведем сложение: (0111 0011 1000 )DD

+ (1101 0110 1111)DD

--------------------------

(0100 1010 0111 )DD - промежуточный результат

+ - + - фиксация наличия переноса

  • знак результата – “+”, так как был перенос из старшей тетрады.

  • скорректируем промежуточный результат: (переносы из тетрады в тетраду запрещены!)

(0100 1010 0111 )DD

+ ( 1010 )DD

--------------------------

(0100 0100 0111 )DD = (447)10 - результат


Пример: (291)10 - (738)10 = (-447)10 . Операнды: (738)10 = (0111 0011 1000)DD ; (291)10 = (0010 1001 0001)DD

  • проинвертируем каждую тетраду числа (-738)10 и прибавим к младшей тетраде единицу: (1000 1100 1000)DD

  • произведем сложение: (0010 1001 0001 )DD

+ (1000 1100 1000 )DD

--------------------------

(1011 0101 1001 )DD - промежуточный результат

- + - - фиксация наличия переноса

  • знак результата – “-”, так как не было переноса из старшей тетрады.

  • скорректируем промежуточный результат: (переносы из тетрады в тетраду запрещены!)

так как знак результата – “-”, то мы получили результат в дополнительном коде, и его надо перевести теперь в прямой: (1011 0101 1001 )DD = (0100 1010 0111 )DD

скорректируем результат:

(0100 1010 0111 )DD

+ ( 1010 )DD

--------------------------

(0100 0100 0111 )DD = (-447)10 - результат


еализация вычитания.

На Рис2 приведена структурная схема устройства для выполнения операции вычитания: E – обозначение сумматора для одной тетрады, структура которого приведена на Рис1; P – разрешение переноса между тетрадами (“1” – перенос разрешен, “0” - коррекция); Тг – триггера, фиксирующие перенос между тетрадами.


Умножение.

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

Для получения с = a*b надо прибавить a к промежуточному результату b раз. Т.е. вводится аккумулятор (Ас), который хранит промежуточный результат и перед началом умножения равен 0, и вводится счетчик (Сч).

Алгоритм умножения:

Пусть с = a*b и b = {bn, bn-1,…., b1}, где bi – i-ая тетрада делителя.

  1. Определение знака результата: zn(a)+zn(b) mod 2 = zn(c).

  2. i = 1, Сч := bi , Ac := 0

  3. Произвести сложение по правилам д/д кодирования:

Ас := Ac + (множимое в избыточном коде);

После сложения: если из тетрады не было переноса, то отнимаем из нее 6 (c блок. переноса из тетрады в тетраду)

  1. Сч := Cч – 1

  2. Если (Сч != 0), то перейти к п.2; иначе:

  1. Сдвинуть Ac вправо на 1 тетраду;

  2. i = i +1 , Если ( i > n ), то конец; иначе - Сч := bi и перейти к п.2

Пример: (37)10 * (12)10 = (444)10 .

Операнды: (12)10 = (0001 0010)DD ;

(37)10 = (0011 0111)DD = (1001 1101)избыт. код

0000 0000 - Ac = 0

+ 1001 1101

-------------

1001 1101

+ 1010 1010 - коррекция после сложения

-------------

0011 0111

+ 1001 1101

-------------

1101 0100

+ 1010 0000 - коррекция после сложения

------------

0111 0100

-------------------------

0000 0111 0100 - сдвиг на 1 тетраду вправо

+ 1001 1101

--------------------------

1010 0100 0100

+ 1010 0000 - коррекция после сложения

--------------------------

0100 0100 0100 - сдвиг на 1 тетраду вправо

--------------------------

0000 0100 0100 0100 = (444)10

Деление.

Деление сводится к вычитанию и аналогично умножению. Для получения с = a / b надо вычесть из a делитель b некоторое число раз (с).

Алгоритм деления (аналогично умножению):

Определение знака результата аналогично. Из делимого вычесть делитель, предварительно выровняв по старшей тетраде. Если результат >= 0, то к текущему значению частного прибавить 1. Если результат < 0, то восстановить предыдущий остаток, прибавив к промежуточному результату делитель, и восстановленный остаток сдвинуть влево на 1 тетраду. И переходим к формированию следующей цифры частного.

Пример (для понимания алгоритма без представления в д/д CC): (444)10 / (12)10 = (37)10 .

с = {c2 , c1} - частное

444

- 12

------------- c2 = 1

32

- 12

------------- c2 = c2 + 1 = 2

20

- 12

------------- c2 = c2 + 1 = 3

8

- 12

------------

-4 < 0

+ 12 - восстановление

------------

8

-----------

84 - сдвиг на 1 тетраду

- 12

------------ c1 = 1

72

- 12

------------ c1 = c1 + 1 = 2

60

- 12

------------ c1 = c1 + 1 = 3

48

- 12

------------ c1 = c1 + 1 = 4

36

- 12

------------ c1 = c1 + 1 = 5

24

- 12

------------ c1 = c1 + 1 = 6

12

- 12

------------ c1 = c1 + 1 = 7

0

………………………. Т.о. с = 37.

  1. 1Подготовила: Даша Д.

  2. Литература: Лекции по “Организации ЭВМ” (от 05.05.04).

4


Характеристики

Тип файла
Документ
Размер
225,5 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов ответов (шпаргалок)

ГОСЫ!!!
19, 27
12
39. Система управления файлами. Основные задачи ОС по управлению файлами. Логическая и физическая организация файловой системы
41
42. Понятие программных средств и их жизненный цикл
46. Поля Галуа и алгебра полиномов
47. Методы шифрования с открытым ключом
49
50. Экспертные системы. Архитектура. Основные компоненты
51. Эволюционное моделирование. Генетическое программирование
52
53
54. Теорема о полноте системы функций алгебры логики. Необходимость
57. Основные синтаксические конструкции языка ПРОЛОГ
58. Префиксная форма записи и списковая структура программы и данных на языке ЛИСП
59
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7028
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее