Главная страница
Навигация по странице:

  • Задания для самостоятельной работы

  • Основы бортовых вычислительных машин


    Скачать 3.2 Mb.
    НазваниеОсновы бортовых вычислительных машин
    Дата02.05.2023
    Размер3.2 Mb.
    Формат файлаpdf
    Имя файлаBazhenov-bbvm.pdf
    ТипУчебное пособие
    #1101823
    страница2 из 21
    1   2   3   4   5   6   7   8   9   ...   21
    П = А

    В = 1 0 0 0 1 , 1 1 1 0
    При выполнении умножения на бумаге можно не указывать по- ложений запятой в частичных произведениях, следует лишь правиль- но записать коды один под другим и произвести их сложение. Поло- жение запятой в произведении определяется числом разрядов в его дробной части, которое равно сумме чисел разрядов в дробных частях множимого и множителя.
    Деление многоразрядных чисел производится по таким же пра- вилам, как и в десятичной системе счисления. Перед делением в де- лимом и делителе уравнивается количество цифр после запятой путем добавления нулей, затем запятые отбрасываются. Процедура нахож- дения частного иллюстрируется на примере деления числа А =
    1100,011 на число В = 10,01:
    Делимое Делитель
    1 1 0 0 , 0 1 1 1 0 , 0 1 0
    -
    1 0 0 1 0 1 0 1 , 1 0 0 1 1 0 1 1
    Частное
    1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0

    19 1.2.2 Сложение и умножение чисел по модулю
    При аппаратурной реализации устройства цифровой обработки информации обычно существуют ограничения на длину разрядной сетки, т.е. количество разрядов целой и дробной части. В этом случае, вне зависимости от реального значения, результат арифметических операций будет также ограничен разрядной сеткой. Пусть цифровое устройство работает только с целыми числами, для записи которых используется n, разрядов. Произведем сложение двоичных чисел А и
    В. Если сумма С = А + B < 2
    n
    , то она может быть записана в п разря- дах. Но может оказаться, что С

    2
    n
    , в этом случае для регистрации суммы потребовался бы еще один дополнительный разряд слева с ве- сом 2
    n
    . Так как в разрядной сетке этого разряда нет, то результат бу- дет соответствовать остатку от деления суммы С на величину М = 2
    n
    ,
    (деление на
    2
    n
    соответствует сдвигу числа вправо на п разрядов).
    Этот остаток и называется суммой чисел А и В по модулю 2
    n
    . Для обозначения суммы по модулю применяется запись
    [ ]
    [
    ]
    2
    mod
    2
    mod
    n
    n
    B
    A
    С
    +
    =
    Операции сложения и умножения чисел по модулю могут про- изводиться в любой системе счисления при любой величине модуля
    М.
    Например, при сложении двоичных чисел А = 10110
    (2)
    = 22
    (10)
    и
    В = 10011
    (2)
    = 19
    (10)
    получаем А + В = 101001
    (2)
    = 41
    (10)
    . В рамках 5 - разрядной сетки старший разряд этой суммы не регистрируется (2 5
    =
    32). В результате будет зарегистрировано число, равное значению указанной суммы по модулю М = 2 5
    :
    [
    ]
    [
    ]
    (10)
    (2)
    5 5
    9 01001 2
    mod
    101001 2
    mod
    =
    =
    =
    +
    В
    А
    Произведение двоичных чисел А = 01011
    (2)
    и В = 00111
    (2)
    равно
    А

    В = 1001101
    (2)
    = 77
    (10)
    в рамках пятиразрядной сетки будет зареги- стрировано число, равное значению найденного произведения по мо- дулю 2 5
    , т.е.:
    [
    ]
    [
    ]
    13 01101 2
    mod
    1001101 2
    mod
    (10)
    (2)
    5 5
    =
    =
    =

    В
    А
    1.2.3 Перевод чисел из одной системы счисления в другую
    Для перевода чисел из системы счисления с основанием q в сис- тему счисления с основанием р могут быть использованы следующие

    20 методы: метод непосредственного замещения; метод последовательного деления на основание новой системы счисления; метод последовательного умножения на основание новой систе- мы счисления.
    Метод непосредственного замещения. Метод применяется для перевода всех видов чисел (целых, дробных и смешанных). Перевод числа из СС с основанием q, в СС с основанием р производится в сле- дующем порядке.
    1. Заданное число в СС с основанием q представляется в виде взвешенной суммы (1.1):



    =
    =
    1
    n
    m
    i
    i
    i
    q
    a
    А
    2. Все цифры а
    i
    и основание q записываются (замещаются) циф- рами системы счисления с новым основанием р .
    3. Выполняются все арифметические операции в соответствии с формулой (1.1) в СС с основанием р .
    Пример 1: A
    (10)
    = 35,25

    A
    (2)
    35,25
    (10)
    = 3

    10 1
    + 5

    10 0
    + 2

    10
    -1
    + 5

    10
    -2
    ;
    ;
    1010 1010 1
    101 1010 1
    10 1
    101 1010 11
    (2)


    +

    +

    +

    =
    А
    A
    (2)

    100011,01.
    Пример 2 : A
    (2)
    = 1001,011

    A
    (10)
    1001,011
    (2)
    = 1

    10 3
    + 0

    10 2
    + 0

    10 1
    + 1

    10 0
    + 0

    10
    -1
    + 0

    10
    -2
    +1

    10
    -3
    ;
    A
    (10)
    = 1

    2 3
    + 0

    2 2
    + 0

    2 1
    + 1

    2 0
    + 0

    2
    -1
    + 1

    2
    -2
    + 1

    2
    -3
    ;
    A
    (10)
    = 9,375.
    Метод непосредственного замещения удобен при переводе чи- сел из любой CC в ту СС, в которой наиболее просто выполняются арифметические операции. При ручном счете этим методом удобно переводить числа в десятичную СС, а при автоматическом переводе с помощью ЭВМ - в двоичную СС.
    Метод последовательного деления на основание новой системы
    счисления. Этот метод используется только для перевода целых чисел.
    Для перевода числа из СС с основанием q, в СС с основанием р необ- ходимо :
    1. Представить основание новой СС р в старой СС с основанием q.
    2. Последовательно делить число и промежуточные частные деле-

    21 ния этого числа на основание новой системы счисления, представ- ленные в старой СС. Полученные остатки и последнее частное будут искомыми изображениями цифр р - ичного числа, выраженные в ста- рой СС.
    3. Первый остаток записать в младший разряд, все последующие остатки в более старшие, а последнее частное - в старший разряд чис- ла.
    4. Перевести найденные цифры р - ичного числа в СС с основа- нием р .
    Пример: А
    (10)
    = 559

    А
    (16)
    1. q = 16 2.
    5 5 9 1 6
    -
    4 8 3 4 1 6 7 9 3 2 2 1 6 6 4 2 0 0 1 5 2
    а
    0
    (q) = 15 а
    1
    (q) = 2 а
    2
    (q) = 2 3. a
    0(10)
    = 15

    a
    0(16)
    = F; a
    1(10)
    = 2

    a
    1(16)
    = 2;
    a
    2(10)
    = 2

    a
    2(16)
    = 2.
    4. A
    (16)
    = 22F
    Ответ: 559
    (10)
    = 22F.
    Метод последовательного умножения на основание новой сис-
    темы счисления. Этот метод используется для перевода из одной СС в другую только правильных дробей. При переводе числа из одной
    СС с основанием q, в другую с основанием р этим методом необхо- димо:
    1. Представить основание новой СС р в СС с основанием q.
    2. Последовательно умножать это число и промежуточные про- изведения на основание новой СС р, отбрасывая каждый раз целые части произведений. Эти целые части промежуточных произведений являются изображением цифр искомого р - ичного числа, записанные в старой СС.
    3. Записать целую часть первого произведения в старший (a
    -1
    ) разряд р - ичного числа, а целые части i - тых произведений в после- дующие a
    -i
    разряды.
    4. Записать найденные цифры р - ичного числа, выраженные в
    СС с основанием q, в СС с основанием р .

    22
    Пример: A
    (10)
    = 0,675

    A
    (2)
    1. р
    (10)
    = 2 ;
    2. 0,675 х 2 = 1,350 a
    -1
    = 1;
    0,350 х 2 = 0,7 а
    -2
    = 0;
    0,7 х 2 = 1,4 а
    -3
    = 1;
    0,4 х 2 = 0,8 а
    -4
    = 0;
    0,8 х 2 = 1,6 а
    -5
    = 1;
    0,6 х 2 = 1,2 а
    -6
    = 1 и т.д.
    3. Так как 1
    (10)
    = 1
    (2)
    , 0
    (10)
    = 0
    (2)
    , то А
    (2)
    = 0,101011 и т.д.
    Дробная часть (частичное произведение), полученная при по- следовательном умножении на основание, часто не принимает значе- ния нуля. В этом случае процесс умножения продолжается до полу- чения количества разрядов, определяемых разрядной сеткой числа или до обеспечения заданной точности представления числа.
    Для перевода смешанных чисел (содержащих целую и дробную часть) целую часть получают методом деления на основание новой
    СС, а дробную - методом умножения на основание новой СС. Если основание одной СС является целой степенью основания другого (на- пример 8 = 2 3
    , 16 = 2 4
    ), то перевод чисел из одной СС в другую су- щественно упрощается, для этого каждую восьмеричную (шестнадца- теричную) цифру заменяют равным ей трехзначным (четырехзнач- ным) двоичным числом, т.е. двоичной триадой (тетрадой).
    1.2.4 Понятие о системах счисления в остаточных классах
    Недостатком позиционных систем счисления является наличие связи между разрядами при выполнении арифметических действий, что проявляется в возникновении и учете распространения переносов и займов от младших разрядов к старшим. Это усложняет аппаратуру и уменьшает быстродействие цифровой ЭВМ.
    Система счисления в остаточных классах (СОК) является непо- зиционной системой и позволяет выполнять арифметические дейст- вия, кроме деления, во всех разрядах одновременно и независимо
    (поразрядно).
    Каждый разряд в СОК имеет свое основание. В качестве основа- ний системы выбирают ряд целых положительных взаимно простых

    23 чисел
    1 2
    ,
    ,...,
    п
    р р
    р . Основания системы определяют диапазон пред- ставления целых чисел от 0 до Р :
    1 2
    п
    Р
    р
    р
    р
    =

    ⋅ ⋅
    Любое целое число А, удовлетворяющее условию 0 А P
    ≤ <
    , представляется в СОК набором остатков от деления А на основания системы, такое представление является единственным:
    1 2
    сок
    п
    А
    а а
    а
    = ⋅ ⋅ ⋅
    , где
    i
    а - наименьший неотрицательный остаток от деления числа А на основание
    (
    ( /
    ))
    i
    i
    i
    p
    a
    ост А р
    =
    Пример. Записать число А = 17 в СОК, если
    1
    p = 3,
    2
    p = 5,
    3
    p = 7.
    Решение. Проверим выполнение условия A P
    <
    представимости заданного числа в СОК с основаниями
    {
    }
    3,5,7 :
    3 5 7 105, 17 105
    P
    = ⋅ ⋅ =
    <
    Условие представимости числа выполняется (17<105), остатки по заданным основаниям будут следующими:
    1 1
    2 2
    3 3
    ( /
    )
    (17 / 3)
    2;
    ( /
    )
    (17 / 5)
    2;
    ( /
    )
    (17 / 7)
    3.
    a
    ост А р
    ост
    a
    ост А р
    ост
    a
    ост А р
    ост
    =
    =
    =
    =
    =
    =
    =
    =
    =
    Следовательно,
    сок
    А
    = 2 2 3
    ⋅ ⋅
    Рассмотрим правила выполнения арифметических операций.
    Правило сложения. При выполнении условия представимости, как слагаемых, так и суммы (А < P, B < P, A + B < P), для получения в
    СОК суммы
    1 2
    (
    )
    сок
    сок
    п
    С
    А
    В
    С С
    С
    =
    +
    =

    ⋅ ⋅
    слагаемых
    сок
    А
    и
    сок
    В
    :
    1 2
    1 2
    ,
    ,
    сок
    п
    сок
    п
    А
    а а
    а
    В
    в в
    в
    = ⋅ ⋅ ⋅
    = ⋅ ⋅ ⋅
    достаточно сложить остатки одноименных слагаемых (сложение сле- дует производить по модулю соответствующего основания):
    (
    )
    /
    i
    i
    i
    i
    С
    ост
    а
    в
    p


    =
    +


    Пример. Сложить в СОК числа
    A
    = 8,
    В
    = 4 с набором основа- ний
    {
    }
    3,5,7
    Решение. Условия представимости выполняются, так как
    Р
    = 3

    5

    7 = 105;
    А
    =
    8 < 105,
    В
    = 4 < 105,
    А
    В
    +
    = 8 + 4 = 12 < 105;
    (
    1 4 4,
    2 3 1)
    сок
    сок
    В
    А
    = ⋅ ⋅
    = ⋅ ⋅
    Согласно правилу сложения находим

    24
    А
    СОК
    = 2. 3. 1
    +
    В
    СОК
    = 1. 4. 4 3. 7. 5
    (А+В)
    СОК
    = 0. 2. 5
    Действительно, (12)
    0 2 5.
    сок
    = ⋅ ⋅
    Правило умножения. Обозначим «*» символ операции умноже- ния.
    При выполнении условия представимости
    (
    ,
    ,
    )
    А
    P B
    P A B
    P
    <
    <
    ∗ <
    для получения произведения
    1 2
    (
    )
    сок
    сок
    п
    C
    А В
    С С
    С
    =

    =


    двух сомножителей
    сок
    А
    и
    :
    сок
    В
    1 2
    ,
    п
    А
    а а
    а
    = ⋅ ⋅
    1 2
    сок
    п
    В
    в в
    в
    = ⋅ ⋅
    достаточно перемножить по соответствующим модулям одноименные остатки сомножителей:
    (
    )
    /
    i
    i
    i
    i
    С
    ост
    а
    в
    p


    =



    Пример. Перемножить в СОК числа с набором оснований
    {
    }
    3,5,7 8
    А
    =
    ,
    4
    В
    =
    Решение. Так как
    3 5 7 105,
    8 105,
    4 105,
    Р
    А
    D
    = ⋅ ⋅ =
    = <
    = <
    32 105
    A B
    ∗ =
    <
    , то
    А
    СОК
    = 2.
    3. 1
    *
    В
    СОК
    = 1.
    4. 4 2. 12 4
    (А*В)
    СОК
    = 2.
    2. 4
    Действительно, (32)
    2 2 4.
    сок
    = ⋅ ⋅
    Главное преимущество СОК состоит в том, что основные ариф- метические операции, кроме деления, в СОК выполняют поразрядно, вследствие чего могут быть достигнуты значительно более высокие скорости выполнения операций, чем в позиционных системах.
    К недостаткам СОК можно отнести:
    1. Сложность выполнения операций деления и сравнения чисел.
    2. Сложность определения факта переполнения разрядной сетки, т.е. выхода результата за диапазон представления чисел.
    3. Сложность обратного перевода чисел из СОК в позиционную
    СС.
    Указанные недостатки являются причиной того, что СОК нахо- дят пока ограниченное применение в специализированных ЭВМ, при решении задач, в которых преобладают операции сложения, вычита- ния и умножения.

    25
    Задания
    для самостоятельной работы
    1. Перевести десятичные числа: 19,5; 32,125; 17,25; 44,5; 27,25;
    52,6 в двоичную систему счисления.
    2. Перевести двоичные числа: 11011, 101; 1101,011; 10101,11;
    11001,101; 100001,1 в десятичную систему счисления.
    3. Перевести десятичные числа: 20; 34; 17; 42; 87; 95 в восьме- ричную систему счисления.
    4. Перевести десятичные числа 125; 1022; 511; 62; 128; 100; 120 в двоичную систему счисления (в восьмеричную СС; в шестнадцате- ричную СС).
    5. Перевести десятичные дроби 0,5; 0,25; 0,375; 0,1; 0,6; 0,1275 в двоичную систему счисления с ошибкой, не превышающей значения
    2
    -8 6. Записать в двоичной системе счисления число А
    (8)
    = 373,25.
    7. Записать в восьмеричной системе счисления число
    А
    (2)
    = 0100111010.
    8. Записать в восьмеричной системе счисления число
    А
    (10)
    = 389,79.
    9. Записать в двоичной системе счисления число
    А
    (16)
    = 3ДF,СА.
    10. Записать в восьмеричной системе счисления число
    А
    (16)
    = АF,ДВ2.
    11. Записать в десятичной системе счисления число
    А
    (16)
    = АЗFE,2Д.
    12. Записать в двоичной системе счисления число А
    (10)
    = 67, 125.
    13. Записать в двоичной системе счисления число А
    (10)
    = 1,678.
    14. Записать в восьмеричной системе счисления число
    А
    (10)
    = 29,375.
    15. Записать в шестнадцатеричной системе счисления число
    А
    (10)
    = 738,275.

    26 1.3 Машинные двоичные коды и действия с ними
    1.3.1 Формы представления чисел
    В ЭВМ применяются две формы представления чисел: с фикси- рованной запятой и с плавающей запятой. Прежде чем рассмотреть каждую из форм представления чисел запишем некоторое произволь- ное число А в виде полинома
    ,
    1 1
    0 0
    2 2
    1 1
    m
    m
    n
    n
    n
    n
    q
    а
    q
    а
    q
    а
    q
    а
    q
    а
    А









    +
    +

    +

    +
    +

    +

    =
    (1.3) где а
    i
    - цифра из алфавита цифр выбранной позиционной системы счисления (ПСС);
    q
    i
    - основание ПСС;
    i – коэффициент, учитывающий позицию (место расположения) цифры в составе числа.
    Затем преобразуем формулу (1.3) к виду:
    1
    A
    p
    n
    m
    i
    p
    i
    i
    p
    M
    q
    q
    a
    q
    А

    =


    =



    =

    Здесь М
    А
    - цифровая часть числа А, называемая его мантиссой, р - це- лое число, которое называют порядком. Множитель q
    p
    называют масштабом.
    Для чисел c фиксированной запятой (ФЗ) величина р постоянна и обычно равна п . При р = п мантисса числа будет правильной дро- бью, причем
    r
    A
    q
    M



    1
    ,
    (1.4) где r - количестве разрядов, используемых для записи мантиссы чис- ла. Изображается М
    А
    записью вида
    r
    A
    a
    a
    a
    M



    =
    ,
    0 2
    1
    В машинах с ФЗ любое число А представляется только своей мантиссой, а масштаб q
    p
    в машине никак не отображается. Поэтому масштабы чисел необходимо учитывать в алгоритмах решаемых за- дач. Это делается путем масштабирования всех исходных данных и результатов всех операций в математическом списании задачи так, чтобы не допустить нарушения условия (1.4). В противном случае происходит грубое искажение результата из-за потери в ЭВМ стар- ших разрядов мантиссы.
    Достоинством представления чисел в форме с ФЗ является ма- лый расход оборудования для представления числовой информации и

    27 высокая производительность арифметико-логического устройства
    (АЛУ), обусловленные простотой алгоритмов выполнения арифмети- ческих операций. Недостаток - необходимость осуществления мас- штабирования исходных данных на этапе подготовки вычислений.
    Представление чисел в форме с плавающей запятой (ПЗ) требует отображения не только мантиссы М
    А
    каждого числа, но и его масшта- ба q
    p
    . Для представления последнего достаточно записать только его порядок р. Основное достоинство такого представления в том, что отпадает необходимость в масштабировании переменных. Недостат- ком является сложность алгоритмов реализации арифметических опе- раций. Необходимость выполнения действий и над мантиссами чисел, и над их порядками ведет к увеличению объема оборудования и к снижению производительности машин.
    К бортовым ЦВМ предъявляются жесткие ограничения на мас- согабаритные характеристики и время выполнения арифметических операций. Одним из путей достижения этих ограничений является использование представления чисел с фиксированной запятой. А сами числа должны быть представлены в виде правильных дробей, целая часть которых равна нулю. В связи с этим между числом и его пред- ставлением в ЦВМ существуют отличия. Число, преобразованное для размещения внутри ЦВМ, называется машинным кодом.
    1.3.2 Машинные двоичные коды
    В цифровых БВМ применяют прямой, обратный и дополнитель- ный коды чисел. Многообразие применяемых кодов определяется их достоинствами и недостатками, а также особенностями используемых операционных устройств.
    Прямой код удобен для хранения и передачи чисел, обратный и дополнительный коды - для выполнения арифметических операций.
    Рассмотрим эти коды на примере кодирования двоичных чисел с фик- сированной запятой вида
    (
    )
    1 0
    1
    (2)
    <
    ±
    =


    A
    a
    a
    А
    m
    . Индекс 2 для обо- значения двоичных чисел будем в дальнейшем опускать.
    Прямой код обозначают через [ А ]
    пк
    :
    [ ]





    =




    0
    ,
    1
    ,
    0
    ,
    0 1
    1
    пк
    А
    если
    a
    a
    А
    если
    a
    a
    A
    m
    m
    (1.5)

    28
    Нуль в прямом коде имеет два представления:
    [ ]
    0 0
    0 0
    пк
    =
    +
    и
    [ ]
    0 0
    1 0
    пк
    =

    Пример. А = + 0,101; В = - 0,101. Найти [А]
    пк и [В]
    пк
    Решение. Согласно (1.5) находим: [А]
    пк
    = 0.101; [В]
    пк
    = 1.101.
    Обратный код обозначается следующим образом: [А]
    ок
    . Обрат- ный код положительных чисел совпадает с прямым кодом. Для отри- цательных чисел правило формирования обратного кода заключается в записи 1 в знаковый разряд и инвертировании (замена нуля едини- цей и наоборот) всех остальных разрядов числа.
    [ ]





    =






    0
    ,
    1
    ,
    0
    ,
    0 2
    1 2
    1
    ок
    А
    если
    a
    a
    a
    А
    если
    а
    a
    a
    A
    m
    m
    Нуль имеет следующие два представления:
    [ ]
    0 0
    0 0
    ок
    =
    +
    и
    [ ]
    1 1
    1 0
    ок
    =

    Пример. А = + 0,101; В = - 0,101
    Решение. Так как A положительное число, то
    [ ]
    ОК
    A
    =
    0.101. Для отрицательного В получим
    [ ]
    ОК
    В
    =
    1.010 .
    Дополнительный код [А]
    дк положительного числа равен его пря- мому коду. Отрицательное число А в процессе кодирования заменяет- ся дополнением его прямого кода до двух т.е. величины 10.0
    (2)
    :
    [ ]
    [ ]
    ,
    А
    .
    А
    пк дк
    10

    =
    если А < 0,
    [ ]
    [ ]
    ,
    А
    А
    пк дк
    =
    если А

    0.
    Пусть А = - 0,1011. Найти [A]
    дк
    В соответствии с правилом кодирования
    1 11 11+1 10
    (2)
    = 10.0000
    [A]
    пк
    =
    -
    1.1011
    [A]
    дк
    = 1.01 01 =[A]
    ок
    +1 мл. разряда
    Как видно, все цифры результата оказались инвертированными
    (
    i
    а
    = 1, если
    i
    a
    = 0 и
    i
    а
    = 0, если
    i
    a
    = 1), за исключением последней значащей единицы и знакового разряда.
    Таким образом, можно сформулировать два правила перевода:
    1. Дополнительный код отрицательного числа получается из прямого кода этого числа путем инвертирования всех разрядов, кроме знакового, и прибавлением единицы младшего разряда.

    29 2. Для получения дополнительного кода отрицательного числа следует в прямом коде этого числа инвертировать все цифры кроме знаковой, последней значащей единицы и следующих за ней в более младших разрядах нулей.
    Примеры:
    [A]
    пк
    = 1.1010111; [A]
    дк
    = 1.0101000 + 0.0000001 = 1.0101001;
    [В]
    пк
    = 1.1010000; [В]
    дк
    = 1.01011111 + 0.0000001 = 1.0110000.
    В дополнительном коде нуль имеет единственное значение
    [0]
    дк
    =0.000...00.
    Результат выполнения операций сложения или вычитания для дробных чисел может оказаться по абсолютной величине большим или равным единице, поэтому, чтобы не потерять значащую цифру результата в разряде единиц в обратных и дополнительных кодах, не- обходимо, в общем случае, предусмотреть представление цифра а
    0
    разряда единиц, при этом знак числа а
    зн будет уже представлен в раз- ряде для двоек:
    [ ]
    m
    зн
    а
    а
    а
    а
    А


    =
    1 0
    . Коды таких чисел называют моди- фицированными.
    Модифицированный обратный код (МОК) числа А имеет вид:
    [ ]





    =




    0
    ,
    1
    ,
    0
    ,
    0 1
    0 1
    0
    мок
    А
    если
    а
    а
    а
    А
    если
    а
    а
    а
    A
    m
    m
    Модифицированный дополнительный код (МДК) обозначается через
    [ ]
    [ ]
    [ ]




    +

    =
    0
    ,
    1
    ,
    0
    ,
    мок мок мдк
    А
    если
    разряда
    мл
    A
    А
    если
    A
    A
    1.3.3 Арифметические действия в кодах
    Выполнение операций сложения и вычитания кодов. Правила сложения многоразрядных чисел (двух положительных или двух от- рицательных), записанных в прямом коде, отличаются от правил сло- жения многоразрядных двоичных чисел только в определении знака.
    Знаковый разряд при суммировании кодов чисел с одинаковыми зна- ками равен знаковым разрядам слагаемых.

    30
    Пример:
    А=0,01011
    [A]
    пк
    =0,01011
    В=0,00111
    +
    [В]
    пк
    =0,00111
    А +В=0, 10010
    [A]
    пк
    + [В]
    пк
    =1,10010
    А=-0,01011
    [A]
    пк
    =1,01011
    В=-0,00111
    +
    [В]
    пк
    =1,00111
    А+В =-0,10010
    [A]
    пк
    + [В]
    пк
    =1,10010
    Сложение прямых кодов чисел, имеющих разные знаки осуще- ствляется по правилу вычитания мантисс многоразрядных двоичных чисел. Вычитание всегда осуществляется из большего по абсолютной величине числа меньшего. Результату присваивается знак большего числа.
    Пример:
    А= 0,01011
    [A]
    пк
    =0,01011
    В=-0,00111
    -
    [В]
    пк
    =1,00111
    А +()-В = 0,00100
    [A]
    пк
    - [В]
    пк
    =0,00100
    А =-0,01011
    [A]
    пк
    =1,01011
    В = 0,00111
    -
    [В]
    пк
    =0,00111
    -А +В =-(А-В)=-0,00100
    [A]
    пк
    - [В]
    пк
    =1,00100
    Во всех случаях при возникновении переноса из старшего раз- ряда мантиссы в знаковый разряд фиксируется сбой нормальной ра- боты машины, вызванный переполнением разрядной сетки.
    При сложении кодов чисел, имеющих разный знак удобнее пользоваться обратными и дополнительными кодами. В этом случае знаковый разряд участвует в сложении наравне с разрядами мантис- сы.
    Пример: Обратные коды
    А = - 0 , 0 1 0 1 1
    [A]
    ок
    = 1 , 1 0 1 0 0
    +
    В = 0 , 0 0 1 1 1
    +
    [В]
    ок
    = 0 , 0 0 1 1 1
    -А + В - 0 , 0 0 1 0 0 [A]
    ок
    + [В]
    ок
    = 1 , 1 1 0 1 1 ⇒ -0 , 0 0 1 0 0
    А = 0 , 0 1 0 1 1
    [A]
    ок
    = 0 , 0 1 0 1 1
    +
    В = - 0 , 0 0 1 1 1
    +
    [В]
    ок
    = 1 , 1 1 0 0 0
    А + (-В)= 0 , 0 0 1 0 0 1 0 , 0 0 0 1 1 ⇒ 0 , 0 0 1 0 0
    +
    При сложении обратных кодов двоичного числа единица переноса из знаковых разрядов прибавляется к младшему разряду результата.

    31
    Дополнительные коды
    А = - 0 , 0 1 0 1 1 [A]
    дк
    = 1 , 1 0 1 0 1
    В = 0 , 0 0 1 1 1 [В]
    дк
    = 0 , 0 0 1 1 1
    [A]
    дк
    = 1 , 1 0 1 0 1
    +
    [В]
    дк
    = 0 , 0 0 1 1 1
    [A]
    дк
    + [В]
    дк
    = 1 , 1 1 1 0 0 ⇒ 1 , 1 1 0 1 1
    ок
    ⇒ - 0 , 0 0 1 0 0
    А = 0 , 0 1 0 1 1 [A]
    дк
    = 0 , 0 1 0 1 1
    В = - 0 , 0 0 1 1 1 [В]
    дк
    = 1 , 1 1 0 0 1
    [A]
    дк
    = 0 , 0 1 0 1 1
    +
    [В]
    дк
    = 1 , 1 1 0 0 1 1 0 , 0 0 1 0 0 ⇒ 0 , 0 0 1 0 0
    В случае дополнительных кодов перенос из знаковых разрядов отбрасывается.
    Выполнение операций умножения в кодах. При представлении двоичных чисел в виде кода для реализации операций умножения и деления проще всего использовать прямые коды двоичных чисел. В этом случае умножение и деление кодов осуществляется по правилам умножение и деления многоразрядных двоичных чисел. Знак резуль- тата определяется суммированием знаковых разрядов сомножителей по модулю 2, т.е. 0

    0=0; 0

    1=1;1

    0=1; 1

    1=0.
    В большинстве бортовых ЦВМ для представления двоичных чи- сел используются дополнительные коды. Особенность выполнения умножения двоичных чисел, представленных в дополнительном коде, заключается в том, что если хоть один из сомножителей является от- рицательным, то результат будет неправильным. Для получения пра- вильного результата необходимо осуществить коррекцию произведе- ния.
    Например, число X = - 0,1101 в дополнительном коде равно
    [Х]
    дк
    = 1,0011, что может быть получено следующим образом
    2 + Х = 10,0000 + (-0, 1101)= 1,0011.
    Используя равенство [Х]
    дк
    = 2 + X, определим, как должен вы- глядеть правильный результат умножения в различных случаях: а)
    Х > 0, Y > 0 б)
    Х > 0, Y < 0
    Z = X – Y; [Z]
    дк
    = Z;
    Z = XY < 0; [Z]
    дк
    = 2 + Z;
    [X

    Y]
    дк
    = X

    Y;
    [X

    Y]
    дк
    = 2 + X

    Y;

    32 в)
    Х < 0, Y > 0 г)
    Х < 0, Y < 0
    Z = X

    Y < 0; [Z]
    дк
    = 2 +Z;
    Z = X

    Y; [Z]
    дк
    = Z;
    [X

    Y]
    дк
    = 2 + X

    Y;
    [X

    Y]
    дк
    = X

    Y.
    Для этих же вариантов, если просто перемножать дополнитель- ные коды, получаются следующие результаты: а)
    Х > 0, Y < 0
    [X]
    дк
    = Х; [Y]
    дк
    = Y,
    [X]
    дк

    [Y]
    дк
    = X

    Y = [X

    Y]
    дк
    Результат правильный б) Х > 0, Y < 0
    [X]
    дк
    = Х, [Y]
    дк
    = 2 + Y,
    [X]
    дк

    [Y]
    дк
    = X

    (2 +Y) = 2X + Х

    Y.
    Правильный результат равен 2 + Х

    Y . в)
    Х < 0, Y > 0
    [X]
    дк
    = 2 + Х, [Y]
    дк
    = Y,
    [X]
    дк

    [Y]
    дк
    = (2 + X)

    Y = 2Y + Х

    Y.
    При правильном результате 2 + X

    Y. г)
    Х < 0, Y < 0
    [X]
    дк
    = 2 + Х; [Y]
    дк
    = 2 + Y;
    [X]
    дк

    [Y]
    дк
    = (2 + X)

    (2 +Y) = 4 + 2X + 2Y - Х

    Y; а нужно получить Х

    Y .
    Для получения правильного результата существует ряд способов выполнения операции умножения кодов с коррекцией. В бортовых
    ЦВМ Орбита 10, Орбита 20, Ц-100, А-15А умножение осуществляет- ся по следующему правилу.
    1. Умножаются мантиссы дополнительных кодов чисел, т.е. до- полнительные коды без знакового разряда.
    2. К полученному произведению добавляется корректирующее слагаемое.
    Корректирующее слагаемое, в свою очередь, формируется по следующему правилу: а) Если множитель отрицательный, то формируется дополни- тельный код отрицательной мантиссы множимого, такое число (ман- тисса) обозначается буквой М. б) Если множимое отрицательное, то формируется дополнитель- ный код от отрицательной мантиссы множителя. в) Если оба сомножителя отрицательные, то формируется и пер- вое и второе корректирующие слагаемые.

    33
    Пример:
    I.
    Х > 0, Y > 0
    В БЦВМ [X]
    дк
    = Х; [Y]
    дк
    = Y
    Перемножение осуществляется без учета знаковых разрядов.
    Мантиссы кодов совпадают с кодами X У = [X]
    дк
    [Y]
    дк
    II.
    Х > 0, Y < 0
    [X]
    дк
    = Х; [Y]
    дк
    = 2 + Y
    [X]
    дк
    = 0, мантисса Х
    ………………………
    [Y]
    дк
    = 1,………… Например: 1,1011

    2 + Y
    2 + Y 0,1011

    1 + Y
    В БЦВМ перемножаются мантиссы кодов и формируется произ- ведение:
    X ( 1 + Y) = X + ХУ
    Результат пока все равно неверный, поэтому к нему прибавляет- ся корректирующее слагаемое K1:
    X + ХY + К1 = 2 + ХУ
    Отсюда K1 = 2 - X.
    K1 получается путем формирования дополнительного кода от- рицательной мантиссы множимого (X).
    X > 0 т.е. М
    х
    = X , где М - мантисса.
    K1 = [-M
    x
    ]
    дк
    = [-X]
    дк
    = 2 + (-Х) = 2 – Х.
    Таким образом, сформировано первое корректирующее слагае- мое.
    III. Х < 0, Y > 0
    [X]
    дк
    = 2 + Х, М
    х
    = 1 + Х
    [Y]
    дк
    = Y
    Результат перемножения (1 + Х)

    Y = Y + ХY требует введения корректирующего слагаемого
    Y + Х

    Y + К2 = 2 + ХY, отсюда К2 = 2 - Y.
    Второе слагаемое формируется по правилу:
    K2 = [-Y]
    дк
    = 2 + (-Y) = 2 – Y
    IV. Х < 0, Y < 0
    [X]
    дк
    = 2 + Х, М
    х
    = 1 + Х
    [Y]
    дк
    = 2 + Y; М
    y
    = 1 + Y
    (1 + X)

    (1 + Y) = 1 + X + Y + XY

    XY.
    1 + Y

    34
    В машине формируются два корректирующих слагаемых.
    K1 = [-M
    x
    ]
    дк
    = [-(1 + X)] = 2 + (-(1 + X)) = 1 – X.
    K2 = [-Y]
    дк
    = -Y, так как Y < 0, то – Y > 0.
    Прибавление корректирующих слагаемых дает:
    1 + X + Y + XY + K1 + K2 = 1 + X + Y + X

    Y + 1 – X – Y = 2 +
    +X

    Y
    Сумма 2 + X

    Y составляет 10,...... в двоичной системе счисле- ния.
    Так как старшая единица в целой части выпадает из разрядной сетки, результат будет равен 0,...., что соответствует правильному произведению XУ.
    Пример:
    Х = -0,1011
    Y = -0,1010
    Получим результат перемножения чисел по обычным правилам двоичной арифметики:
    1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1
    + 0 , 0 1 1 0 1 1 1 0
    В БЦВМ:
    [X]
    дк
    = 1,0101, М
    х
    = 0,0101 = 1 + Х
    [Y]
    дк
    = 1,0110, М
    y
    = 0,0110 = 1 + Y
    0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 + X + Y + X Y = 0 , 0 0 0 1 1 1 1 0
    Корректирующие слагаемые равны
    К1 = [-М
    х
    ]
    дк
    = 1,1011
    К2 = [-Y]
    дк
    = 0,1010
    Прибавляя корректирующие слагаемые к произведению, полу- чим
    0,00011110 + 1,1011 + 0,1010 = 0,01101110
    Что соответствует правильному результату.

    35
    Операция деления двоичных чисел представленных дополни- тельными кодами сводится к операциям сложения (вычитания) и сдвига.
    В БЦВМ операция деления является самой длительной и осуще- ствляется за несколько циклов, в каждом цикле определяется одна цифра частного. В первом цикле выполняется операция вычитания делимого и делителя, если знаки одинаковые или операция сложения, если знаки разные. При разных знаках частное формируется в обрат- ном коде, а после окончания деления к его младшему разряду при- бавляется единица для перевода в дополнительный код. В каждом по- следующем цикле выполняется либо операция сложения, либо опера- ция вычитания, при этом предыдущий остаток удваивается. Если ча- стное в данном разряде получилось равным нулю, то в следующем цикле выполняется операция вычитания, если единице, то сложение.
    По знаковым разрядам очередного остатка в зависимости от знака де- лителя формируется соответствующая цифра частного.
    Пример:
    Х = - 0 , 0 1 1 0 1 1
    Y = 0 , 1 0 0 1 11 0
    Y
    Х
    ,

    =
    1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 , 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0
    [X]
    дк
    = 1,100101
    [Y]
    дк
    = 0,1001
    I цикл
    [ ]
    [ ]
    [ ]
    ,...
    Z
    ,...;
    1 0
    Z
    0
    ие переполнен
    0
    Y
    X
    0
    дк дк
    =

    =

    >




    +
    1,100101 + 0,1001 = 1 0,001001;
    [ ]
    ок
    Z
    = 1,…
    II цикл
    [ ]
    [ ]
    [ ]
    [ ]
    1 0
    0 0
    2
    Y
    Y
    X
    ок ок дк дк
    =
    >

    =
    <


    +
    Z
    Z
    III цикл
    [ ]
    [ ]
    [ ]
    [ ]
    1 0
    0 0
    4
    Y
    2
    Y
    Y
    X
    ок ок дк дк
    =
    >

    =


    +

    +
    Z
    Z

    36
    -0,001001 + 0,001001 = 0;
    [ ]
    ок
    Z
    = 1,00
    [ ]
    [ ]
    01 1
    01 0
    ок дк
    ,
    ,
    Z
    Z
    =
    +
    =
    Z = - 0,11
    1   2   3   4   5   6   7   8   9   ...   21


    написать администратору сайта