Какие числа имеют одинаковую запись в прямом обратном и дополнительном кодах?

15 ответов на вопрос “Какие числа имеют одинаковую запись в прямом обратном и дополнительном кодах?”

  1. Umron Ответить

    Целые числа в ЭВМ могут быть представлены в виде:
    прямого кода. Прямой код двоичного числа совпадает по изображению с записью самого числа.
    обратного кода. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
    дополнительного кода. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
    Прямой код числа кодирует только знаковую информацию и используется для хранения положительных и отрицательных чисел в ЭВМ. Прямой код двоичного числа совпадает по изображению с записью самого числа, но в знаковом разряде ставится 0, если число положительное и, 1 если число отрицательное.
    Обратный и дополнительный коды используются для выполнения всех арифметических операций через операцию сложения.
    Следует помнить, что положительные числа в обратном и дополнительном коде совпадают с прямым кодом.
    1) Прямой код числа (кодируется только знаковая информация), “+”=0; ”-”=1.
    Для прямого кода возможны два представления нуля, машинный положительный ноль, т.е. +0,110=0,110, машинный отрицательный ноль, т.е. -0,111=1,111.
    Пример перевода
    x1=10101-[x1]пр=010101
    x2=-11101-[x2]пр=111101
    x3=0,101-[x3]пр=0,101
    x4=-0,111-[x4]пр=1,111
    2) Обратный код числа, используется для выполнения арифметических операций вычитания, умножения, деления, через сложение. Обратный код положительного числа совпадает с его прямым кодом, обратный код отрицательного числа формируется по правилам: в знаковом разряде записывается “1”; цифровые значения меняются на противоположные.
    Пример перевода
    x1=10101-[x1]обр=010101
    x2=-11101-[x2]обр=100010
    x3=0,101-[x3]обр=0,101
    x4=-0,111-[x4]обр=1,000
    3) Дополнительный код числа, имеет такое же назначение, как и обратный код числа. Формируется по следующим правилам: положительные числа в дополнительном коде выглядят также как и в обратном и в прямом коде, т.е. не изменяются. Отрицательные числа кодируются следующим образом: к обратному коду отрицательного числа (к младшему разряду) добавляется 1, по правилу двоичной арифметики.
    Пример перевода
    x1=10101-[x1]доп=010101
    x2=-11101-[x2]обр=100010+1-[x2]доп=100011
    x3=0,101-[x3]доп=0,101
    x4=-0,111-[x4]обр=1,000+1-[x4]доп=1,001
    Для выявления ошибок при выполнении арифметических операций используются также модифицированные коды: модифицированный прямой; модифицированный обратный; модифицированный дополнительный, для которых под код знака числа отводится два разряда, т.е. “+”=00; ”-”=11. Если в результате выполнения операции в знаковом разряде появляется комбинация 10 или 01 то для машины это признак ошибки, если 00 или 11 то результат верный.
    Как определить, положительное или отрицательное число? Знак числа определяет старший бит: 0 – положительное число, 1 – отрицательное число. Например, для числа 1,001 сразу можно определить, что оно отрицательное (меньше нуля).
    Пример. Представить в дополнительном коде десятичные числа: -4.
    Решение. Представим число в двоичном коде.
    4 = 00001002
    Инвертируем все разряды числа, а в знаковый разряд заносим 1.
    Двоичное число 0000100 имеет обратный код 1,1111011
    Добавляем к младшему разряду 1.
    В 0-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 1-й разряд.
    7 6 5 4 3 2 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0
    В 1-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 2-й разряд.
    7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0
    В итоге получаем:
    7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0
    Число -4 представляется в двоичном дополнительном коде как 11111100

  2. Хочешь-добьешься Ответить

    So, here is some theory
    Binary code is the binary representation of unsigned integer. If we’re talking about computers, there is certain number of bits used to represent the number. So, total range which can be represented by n-bits is
    Inverse code or one’s complement is simply inverted binary code of a number. That is all zeroes become ones and all ones become zeroes.
    Complement code or “`two’s complement is inverse code plus one
    Now, what is all about?
    These codes were invented to make sign operations more comfortable (for machines). Since I’m a kind of person who likes to learn by example, I’ll explain this statement on examples.
    Let’s assume we have computer with 4-bits binary numbers. Total range which can be represented by 4-bits is 16 – 0,1,… 15
    00 – 0000

    15 – 1111
    But these are unsigned numbers and are not of much use. We need to introduce sign. So, half of range is taken for positive numbers (eight, including zero), and half of range – for negative (also eight). Note that machine considers zero as positive number, unlike usual math.
    So, our positives are 0,…,7, and negatives are -1,…,-8.
    To distinguish positive and negative numbers we assign left-most bit as sign bit. Zero in sign bit tells as that this is positive number and one – negative.
    Positive numbers are represented by plain binary code
    0 – 0000
    1 – 0001

    7 – 0111
    But how negative numbers can be represented? Here comes the complement code.
    That is, -7 complement is
    binary 7 = 0111
    inverse 7 = 1000
    complement 7 = 1001
    Note that binary 1001 is 9, which differs from -7 by 16, or . Or, which is the same, complement code “complements” binary code to , i.e. 7+9=16
    This proved to be very useful for machine computation – usage of complement code to represent negatives allows engineers to use addition scheme for both addition and subtraction, thus simplifying the design of ALU (arithmetic and logical unit – part of processor). Also, this representation easily detects on overflow, and then there are not enough bits to represent the given number.
    Several examples
    7-3=4
    0111 binary 7
    1101 two’s complement of 3
    0100 result of addition 4
    -1+7=6
    1111 two’s complement of 1
    0111 binary 7
    0110 result of addition 6
    Overflow is detected by looking at two last carries, including carry beyond right-most bit. If carry bits are 11 or 00, there is no overflow, if carry bits are 01 or 10, there is overflow. And, if there is no overflow, carry beyond right-most bit can be safely ignored.
    Some examples with carries and fifth bit (bit beyond right-most bit)
    7+1=8
    00111 binary 7
    00001 binary 1
    01110 carries
    01000 result of addition 8 – overflow
    Two last carries are 01. This gives signal of overflow
    -7+7=0
    00111 binary 7
    01001 two’s complement of 7
    11110 carries
    10000 result of addition 16 – but fifth bit can be ignored, real result is 0
    Two last carries are 11. There is no overflow, so correct result is zero.
    Overflow check can be done by simple XOR-ing two last carry bits.
    Because of these convenient properties two’s complement is most common method to represent negative numbers on computers.
    P.S. Inverse code, or one’s complement, “complements” binary code to , (all ones). It also can be used to represent negatives, but addition scheme should employ cyclic carry and is more complex. Besides, range, which can be represented by n-bits is reduced by 1, since 1111 is busy as inverted 0000 – negative zero. So, it is less convenient.

  3. Live-Evil Ответить

    Лекция №5
    Коды: прямой, обратный, дополнительный.
    В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный код, дополнительный код.. Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций  операцией сложения.
    · Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково – с цифрой 0 в знаковом разряде.
    ПРИМЕРЫ.   Число 110=12:                            Число 12710=11111112

    0
    0
    0
    0
    0
    0
    0
    1
                             Знак числа «+»
                                                                                                   
    · Отрицательные числа в прямом, обратном и  дополнительном кодах имеют разное изображение.
    1. Прямой код. В знаковый ряд помещается цифра 1, а в разряды цифровой части числа – двоичный код его абсолютной величины.
    ПРИМЕРЫ.   Прямой код числа -1:              Прямой код числа -127:

    1
    0
    0
    0
    0
    0
    0
    1
                              Знак числа «-»
    2. Обратный код получается инвентированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяют единицами, а единицы – нулями.
    ПРИМЕРЫ.   Число: -1.                               Число: -127.
    Код модуля числа:   0 0000001.                    Код модуля числа:   0 1111111
    Обратный код числа: 1 1111110.                  Обратный код числа: 1 0000000

    1
    1
    1
    1
    1
    1
    1
    0
    3. Дополнительный код получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду.



    ПРИМЕРЫ.   Дополнительный код числа-1:    Дополнительный код числа-127

    1
    1
    1
    1
    1
    1
    1
    1
    Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При вводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.


    Операция сложения чисел в прямом, обратном и дополнительном кодах выполняется на двоичных сумматорах соответствующего кода.
             АРИФМЕТИЧЕСКИЕ ДЕЙСТВИЯ НАД ЦЕЛЫМИ ЧИСЛАМИ

    Сложение и вычитание. В большинстве компьютеров операция вычитания не используется. Вместо неё производится сложение уменьшаемого  с обратным или дополнительным кодом вычитаемого. Это позволяет существенно упростить конструкцию АЛУ.
    При сложении обратных кодов чисел  А и B имеет место четыре основных и два особых случая. Рассмотрим их.

    Случай 1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю.
    Десятичная запись:                   Двоичные коды:

    3
    +
    7
    10
    Получен правильный результат.

    Случай 2. А положительное, В отрицательное и по абсолютной величине больше, чем А . Приведем пример.
    Десятичная запись                 Двоичные коды
          3
    +
      -10
    -7
    Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111=-710
    Случай 3. А положительное, В отрицательное и по абсолютной величине меньше, чем А . Приведем пример.
    Десятичная запись                 Двоичные коды
        10
    +
        -3
    7
    Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы.
    Случай 4. А и В отрицательные. Приведем пример.
    Десятичная запись                 Двоичные коды
          -3
    +
          -7
    -10

    Полученный первоначальный неправильны результат (обратный код числа -1110) вместо обратного кода числа -1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. (0 11110101) При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010=  -1010.
    При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него области памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства.  Ниже приведены два возможных случая переполнения.
    Случай 5. А и В положительные, сумма  А и В больше либо равна 2n-1, где n – количество разрядов количество разрядов для однобайтового формата n=8, 2n-1=2-7=128). Приведем пример.
    Десятичная запись:                             Двоичные коды:
    65                                                         0 1000001
    +                                                       +   0 1100001
    97                                                         1 0100010     Переполнение
    162
    Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210=101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков  слагаемых, что является свидетельством переполнения  разрядной сетки.
    Случай 6. А и В отрицательные, сумма  абсолютных величин А и В больше, либо равна 2n-1. Приведем пример.
    Десятичная запись:                             Двоичные коды:
    -63                                                        1  10000000   Обратный код числа -63
    +                                                             +
    -95                                                        1   0100000     Обратный код числа -95
    -158                                                        1100000     Переполнение
                                                                                  +1
    Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
    Все рассмотренные случаи имеют место и при сложении дополнительных кодов чисел.
    Случай 1. А и В положительные. Здесь нет отличия от случая 1, рассмотренного для обратного кода.

    Случай 2. А положительное, В отрицательное и по абсолютной величине больше, чем А. Приведем пример.
    Десятичная запись:              Двоичные коды:
    3                                              0 0000011
    +                                                +1 1110110   Дополнительный код числа -10
    -10                                             1 1111001    Дополнительный код числа -7
    -7
    Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвентируются и к младшему разряду прибавляется единица: 1  0000110+1  0000111=-710.
    Случай 3. А положительное, В отрицательное и по абсолютной величине меньше, чем А. Приведем пример.
    Десятичная запись:              Двоичные коды:
    10                                            00001010
    +                                                +11111101   Дополнительный код числа -3
    -3                                            00000111
      7
    перенос отбрасывается
    Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.
    Случай 4. А и В отрицательные и по абсолютной величине меньше, чем А. Приведем пример.
    Десятичная запись:              Двоичные коды:
    -3                                             11111101   Дополнительный код числа -3
    +                                                +11111001   Дополнительный код числа -7
    -7                                             11110110   Дополнительный код числа -10
    -10
    перенос отбрасывается
    Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает.
    Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.
    Сравнение рассмотренных форм кодирования целых чисел со знаком показывает: на преобразование отрицательного числа в обратный код компьютер затрачивает меньше времени, чем на преобразование в дополнительный код, так как последнее состоит из двух шагов – образования обратного кода и прибавления единицы к его младшему разряду; время выполнения сложения для дополнительных кодов чисел меньше, чем для их обратных кодов, потому что в таком сложении нет переноса единицы из знакового разряда в младший разряд результата.
    · Умножение и деление. Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число «нуль».в процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции – окончательный результат.
    Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.
    Умножим 1100112 на 1011012.
    Пример. Накапливающий сумматор:           Множитель:
    0 0 0 0 0 0 0 0 0 0 0 0                                        101101
    +                   1 1 0 0 1 1
    1 1 0 0 1 1                                         101100
    +
    1 1 0 0 1 1                                                  Сдвиг на две позиции влево
    1 1 1 1 1 1 1 1                                          101000
    +         1 1 0 0 1 1_____        
    1 0 1 0 0 1 0 1 1 1                                          100000
    +    1 1 0 0 1 1                                                           Сдвиг на две позиции влево
    1  0 0 0 1 1 1 1 0 1 1 1                                           000000
    Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.

  4. IWYXYM Ответить

    12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = … .
    Любое число N в системе счисления с основанием q можно записать в виде N = M . qp, где M – множитель, содержащий все цифры числа (мантисса), а p – целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.
    Если “плавающая” точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
    Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12< = |M|<1. Если это требование выполнено, то число называется нормализованным.
    Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание – в десятичной системе. Примеры нормализованного представления:
    Десятичная система
    Двоичная система
    753.15 = 0.75315 . 103
    –101.01 = –0.10101 . 211 (порядок 112 = 310)
    – 0.000034 = – 0.34 . 10-4
    0.000011 = 0.11 . 2-100 (порядок –1002 = –410)
    Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:

    Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 – 1). Например, порядок, принимающий значения в диапазоне от –128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.
    Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.
    Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
    Персональный компьютер позволяет работать со следующими действительными типами (диапазон значений указан по абсолютной величине):
    Тип данных
    Размер, байт
    Мантисса, бит
    Порядок, бит
    Сдвиг порядка
    Диапазон модулей
    Single
    3,4?10-38..3,4?1038
    Double
    1,7?10-308..1,7?10308
    Extended
    3,4?10-4932..3,4?104932
    Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Double.
    Как видно из таблицы, величина этого типа занимает в памяти 8 байт. На рисунке показано, как здесь представлены поля мантиссы и порядка:
    S
    Смещенный порядок
    Мантисса
    Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 51, т.е. мантисса занимает младшие 52 бита. Черта указывает здесь на положение двоичной запятой. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна единице, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Значение порядка храниться здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка, перед записью его в память, прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль.
    Например, для типа Double порядок занимает 11 бит, поэтому смещение равно (211-1-1)=1023(10) = 1111111111(2). Наконец, бит с номером 63 указывает на знак числа.
    Таким образом, из вышесказанного вытекает следующий алгоритм для получения представления действительного числа в памяти ЭВМ:
    1. перевести модуль данного числа в двоичную систему счисления;
    2. нормализовать двоичное число, т.е. записать в виде М*2p, где М – мантисса (ее целая часть равна 1(2)) и р – порядок, записанный в десятичной системе счисления;
    3. прибавить к порядку смещение и перевести смещенный порядок в двоичную систему счисления;
    4. учитывая знак заданного числа (0 – положительное; 1 – отрицательное), выписать его представление в памяти ЭВМ.
    Пример. Запишем код числа -312,3125.
    1. Двоичная запись модуля этого числа имеет вид 100111000,0101.
    2. Имеем 100111000,0101 = 1,001110000101*28.
    3. Получаем смещенный порядок 8 + 1023 = 1031. Далее имеем 1031(10) = 10000000111(2).
    4. Окончательно
    Очевидно, что более компактно полученный код стоит записать следующим образом: C073850000000000(16).
    Другой пример иллюстрирует обратный переход от кода действительного числа к самому числу.
    Пример. Пусть дан код 3FEC600000000000(16) или
    1. Прежде всего, замечаем, что это код положительного числа, поскольку в разряде с номером 63 записан нуль.
    Получим порядок этого числа. 01111111110(2) = 1022(10).
    1022 – 1023 = -1.
    2. Число имеет вид 1,1100011*2-1 или 0,11100011.
    Переводом в десятичную систему счисления получаем 0,88671875
    Пример. Представить число -25,625 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    1. Двоичная запись модуля этого числа имеет вид 100011,101.
    2. Имеем 100011,101 = 1,00011101 *25.
    3. Найдем смещенный порядок. Для этого находим смещение
    (28-1-1)=127(10)
    5 + 127 = 132.
    Далее имеем 132(10) = 10000100(2).
    4. Окончательно
    Очевидно, что более компактно полученный код стоит записать следующим образом: C18Е8000(16).
    Пример. Сложить двоичные нормализованные числа 0.10111 2-1 и 0.11011 210.
    Сначала посмотрим аналогичный пример сложения нормализованных десятичных чисел в формате с плавающей точкой (возьмем произвольные значения):
    0.56*10-1=0.056 и 0.7842*102=78.42
    Должна получиться сумма = 78.476
    Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого (меньшего) числа сдвигается на три разряда вправо, порядок этого числа увеличивается на 3, получаем 0.00056*102=0.056.
    Замечание. При выравнивании порядков необходимо сдвигать мантиссу меньшегочисла, если приводить большее число 0.7842*102 к порядку -1, то получится число с целой частью, большей 0 – 784.2*10-1, которое невозможно будет сохранить в памяти.
    В результате
    0.00056*102
    0.78420*102
    0.78476*102
    По аналогии складываем двоичные нормализованные числа 0.10111*2-1 и 0.11011*210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого (меньшего) числа сдвигается на три разряда вправо, порядок этого числа увеличивается на 3, получаем 0.00011011*210.
    0.00010111*210
    0.11011000*210
    0.11101111*210
    Пример. Выполнить вычитание двоичных нормализованных чисел 0.10101*210 и 0.11101*21.
    Решение:разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:
    0.101010*210
    0.011101*210
    0.001101*210
    Важно: результат получился ненормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101*20.
    Пример.Выполнить умножение двоичных нормализованных чисел: 0.11101* 2101 и 0.1001* 211.
    Решение:
    0.11101* 2101 * 0.1001* 211 =0.11101*0.1001* 2(101+11) = 0.100000101* 21000.
    Пример.Выполнить деление двоичных нормализованных чисел: 0.1111*2100 и 0.101*211.
    Решение:
    0.1111*2100 / 0.101*211 = (0.1111 / 0.101)*2(100-11) = 1.1* 21 = 0.11*210
    Задания для самостоятельной работы
    Вариант 1
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 578,375; б) -786,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 408Е130000000000; б) С077880000000000.
    3. Представить число -25,625 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.001101*2111 и В=0.010011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 2
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -363,15625; б) -487,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С075228000000000; б) 408В9В0000000000.
    3. Представить число -52,45 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0010001*2110 и В=0.01001*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 3
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 334,15625; б) -367,15625
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С07С08С000000000; б) С0811В0000000000.
    3. Представить число -52,45 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0010001*2110 и В=0.01001*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 4
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) 215,15625; б) -143,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С071760000000000; б) 407FF28000000000
    3. Представить число -78,123 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.111101*2101 и В=0.10111*211. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 5
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) -900,546875; б) -834,5.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 407С060000000000; б) С0610С0000000000
    3. Представить число -15,123 в машинном виде с использованием 2 байтового представления (где 1 бит отводится под знак числа, 5 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.001100101*2111 и В=0.011011*211. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 6
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -969,15625; б) -434,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) C082B30000000000; б) С086ЕВ0000000000.
    3. Представить число -25,25 в машинном виде с использованием 2 байтового представления (где 1 бит отводится под знак числа, 5 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0011101*2110 и В=0.010011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант7
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) -802,15625; б) -172,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С085ЕВ0000000000; б) C07D428000000000
    3. Представить число -10,75 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 5 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00110101*2111 и В=0.01010011*2110. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 8
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) 635,5; б) -555,15625
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С07848С000000000; б) С085394000000000
    3. Представить число -32,125 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два нормализованных числа А=0.0011101*2110 и В=0.0100011*2101. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 9
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 110,546875; б) -743,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С08В794000000000; б) 407СВ28000000000.
    3. Представить число 40,25 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.010101*2111 и В=0.011011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 10
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -141,375; б) 141,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 408ЕА14000000000; б) С07В128000000000.
    3. Представить число -25,25 в машинном виде с использованием 5 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0110001*2110 и В=0.00101011*211. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 11
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 576,375; б) -99,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 40864В0000000000; б) С047140000000000.
    3. Представить число -28,125 в машинном виде с использованием 8 байтового представления (где 1 бит отводится под знак числа, 4 бита – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0101101*2111 и В=0.00110011*2110. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 12
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    a) -796,15625; 6) 325,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) 4060B00000000000; б) С0846С6000000000.
    3. Представить число -10,375 в машинном виде с использованием 6 байтового представления (где 1 бит отводится под знак числа, 5 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.011101*2101 и В=0.00100101*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 13
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    a) -142,375; 6) 565,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) C086494000000000; 6) C083DC6000000000.
    3. Представить число -66,5 в машинном виде с использованием 5 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.01111*2111 и В=0.00100011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 14
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -550,15625; б) 616,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 407С360000000000; б) 408В594000000000.
    3. Представить число -17,125 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0110101*2111 и В=0.00100011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 15
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 84,15625; б) -681,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 4075Е28000000000; б) С07Е980000000000.
    3. Представить число -35,75 в машинном виде с использованием 5 байтового представления (где 1 бит отводится под знак числа, 4 бита – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00110111*211 и В=0.00110011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 16
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) 650,375; б) -974,5.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) C05DCA0000000000; б) 408Е5В0000000000.
    3. Представить число 32,5 в машинном виде с использованием 5 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0010101*2111 и В=0.00100011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 17
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) -423,15625; б) 835,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 4089794000000000; б) 408В414000000000.
    3. Представить число -15,25 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 5 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00110001*2101 и В=0.0100011*211. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 18
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -197,15625; б) 341,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) C057D80000000000; б) 406F0C0000000000.
    3. Представить число 22,125 в машинном виде с использованием 5 байтового представления (где 1 бит отводится под знак числа, 4 бита – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.011101*2111 и В=0.00110011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 19
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) 612,15625; б) -652,546875.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) 40664С0000000000; б) 40684С0000000000.
    3. Представить число -32,125 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.011011*2101 и В=0.00100011*2100. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 20
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    а) -575,375; б) 983,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С088440000000000; б) С0696С0000000000.
    3. Представить число -33,75 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00110011*2110 и В=0.0101011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 21
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    а) -503,15625; б) 339,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    а) С06ЕА50000000000; б) С08Е230000000000.
    3. Представить число -17,825 в машинном виде с использованием 6 байтового представления (где 1 бит отводится под знак числа, 9 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00111011*2111 и В=0.001110011*2100. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 22
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    a) -654,546875; 6) 494,375.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) C0642G0000000000; 6) C082F14000000000.
    3. Представить число 14,95 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 6 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00100101*21111 и В=0.00101011*210. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 23
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    a) 446,15625; 6) -455,375
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) 408B894000000000; б) С089930000000000.
    3. Представить число -8,458 в машинном виде с использованием 3 байтового представления (где 1 бит отводится под знак числа, 4 бита – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0110111*2110 и В=0.001010111*2100. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 24
    1. Запишите код действительного числа, интерпретируя его как величину типа Single.
    a) 279,375; 6) -838,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) 4081C94000000000; 6) 403D800000000000.
    3. Представить число -32,85 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 8 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.00111001*2111 и В=0.00101011*2110. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Вариант 25
    1. Запишите код действительного числа, интерпретируя его как величину типа Double.
    a) 300,546875; 6) -400,15625.
    2. Дан код величины типа Double. Преобразуйте его в число.
    a) 408EFB0000000000; 6) 4078D28000000000.
    3. Представить число 32,125 в машинном виде с использованием 4 байтового представления (где 1 бит отводится под знак числа, 7 бит – под смещённый порядок, остальные биты – под мантиссу).
    4. Заданы два числа А=0.0100101*2111 и В=0.00101011*2101. Вычислить сумму, разность и произведение этих чисел. Результат привести к нормализованной форме.
    Контрольные вопросы:
    1. Как получить прямой и дополнительный коды целого числа?
    2. Как представляются действительные числа в памяти ЭВМ?
    3. Как получить числа в нормализованной форме?
    4. Как выполняются арифметические операции над нормализованными числами?
    Лабораторная работа №6

  5. Gumi Ответить

    Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду.
    Пример
    Сложить двоичные числа X и Y в обратном и дополнительном кодах.
    а) X= 111, Y= -11 (7-3=4)
    1) Сложим числа, пользуясь правилами двоичной арифметики:

    2) Сложим числа, используя коды:
    Прямой код
    Сложение в обратном
    коде
    Сложение в дополнительном коде



    Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр.
    б) X= -101,Y= -110 (-5-6=-11)
    1) Сложим числа, пользуясь правилами двоичной арифметики:

    2) Сложим числа, используя коды:
    Прямой код
    Сложение в обратном
    коде
    Сложение в дополнительном
    коде



    Так как сумма является кодом отрицательного числа (знак 1), то необходимо перевести результаты в прямой код:
    – из обратного кода
    (X+Y)обр=1,1110100 (X+Y)пр=1,0001011;
    – из дополнительного кода
    (X+Y)доп=1,1110101 (X+Y)пр=1,0001010+0,0000001=1,0001011.
    Таким образом, X+Y= -1011 и полученный результат совпадает с обычной записью.
    4.3.3 Модифицированные обратный и дополнительный коды.
    При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде “1”) и наоборот. Например:

    Здесь X и Y – коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа (“1” в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды.
    В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: “00” соответствует знаку “+”, “11” – знаку “-“. Любая другая комбинация (“01” или “10”), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.
    Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

    Комбинация “01” в знаковых разрядах означает, что произошло переполнение и получившийся результат – неверный.
    Рассмотрим ещё один пример.
    Пример. Даны два числа: X=101001 и Y= -011010. Сложить их в модифицированном дополнительном коде.
    1) Переведем X и Y в модифицированный дополнительный код:
    Обычная запись
    Модифицированный обратный код
    Модифицированный дополнительный код
    X= +101001 Y= -011010


    2) Выполним сложение:

    Переполнения нет (в знаковых разрядах “00”), поэтому полученный результат – верный (X+Y=1111)

  6. Gajind Ответить

    Кодомназывают такую запись числа, которая отличается от естественной и общепринятой. В математике естественной формой записи числа является запись, при которой непосредственно перед старшей значащей цифрой числа помещается знак плюс (+) или минус (-), а длина записи определяется величиной числа (иначе, количество символов, использованных для записи разных чисел, как правило, не совпадает). В ЭВМ это не так. Одной из важнейших характеристик любой ЭВМ является длина слова в ней. Длина слова определяется количеством двоичных разрядов слова. Поэтому в ЭВМ, вне зависимости от величины числа, его код всегда имеет фиксированное количество двоичных цифр.
    В двоичном алфавите нет никаких символов, кроме цифр 0 и 1, и необходимы новые правила для указания знака числа. Суть этих правил сводится к тому, что знак плюс изображается цифрой 0, знак минус – цифрой 1, а цифра, изображающая знак, всегда записывается самой первой в записи числа. Код числа всегда содержит изображение его знака, в отличие от математической записи, которая позволяет опускать знак плюс при изображении положительного числа. Так, код 011101, согласно этим правилам, изображает положительное (самая левая цифра – 0) двоичное число 11101.
    Для более простой и экономичной реализации АЛУ применяют несколько разных кодов чисел. Это связано с тем, что разные операции в ЭВМ более просто реализуются в разных кодах.
    Прямой код двоичного числа – это само двоичное число, в котором все цифры, изображающие его значение, записываются как в математической записи, а знак числа записывается двоичной цифрой. При этом никакого символа, отделяющего эту цифру от старшей цифры, используемой при изображении его величины, не допускается. В таких случаях говорят о том, что назначение цифры в коде определяется его позицией.
    Пример:
    Изображаемое число Код
    · +1101 (+13) 0000 1101
    · +1011101 (+93) 0101 1101
    · 1101 (-13) 1000 1101
    (В примере коды изображаются восемью цифрами)
    Прямой код почти не отличается от принятого в математике: для выявления абсолютной величины (модуля) числа, надо отбросить цифру, обозначающую его знак. Прямой код используется при хранении чисел в памяти ЭВМ, а также при выполнении операций умножения и деления. Однако применительно к операциям сложения и вычитания такой код неудобен: правила счета для положительных и отрицательных чисел различаются.
    Обратный код положительного числа совпадает с прямым, а при записи отрицательного числа все его цифры, кроме цифры, изображающей знак числа, заменяются на противоположные (0 заменяется на 1, а 1 – на 0).
    Примеры записи.
    Изображаемое число Код
    · +1101 (+13) 0000 1101
    · +1011101 (+93) 0101 1101
    · 1101 (-13) 1111 0010
    В этом коде как к положительным, так и к отрицательным числам можно применять одни и те же правила, а операцию вычитания (А-В) можно заменить операцией сложения (А+(-В)).
    Для восстановления прямого кода отрицательного числа из обратного кода надо все цифры, кроме цифры, изображающей знак числа, заменить на противоположные.
    Дополнительный код положительного числа совпадает с прямым, а код отрицательного числа образуется как результат увеличения на 1 его обратного кода. (Процесс построения дополнительного кода отрицательного числа можно разбить на два этапа – построить обратный код, а затем из него построить дополнительный).
    Пример:
    Число -> – 101101
    Прямой код -> 1101101
    Обратный код -> 1010010
    +1
    Дополнительный -> 1010011
    Для восстановления прямого кода числа из дополнительного нужно полностью повторить (и именно в том же порядке) действия, которые использовались при переводе из прямого в дополнительный код: сначала все цифры, кроме цифры, изображающей знак, заменить на противоположные, а затем прибавить 1.
    Практически все современные цифровые ЭВМ в качестве основной используют двоичную систему счисления. При этом все арифметические операции над двоичными числами можно свести к двум элементарным – сложению и сдвигу двоичных кодов, изображающих числа. Это позволит технически реализовать четыре действия арифметики в одном устройстве, называемом арифметико-логическом (АЛУ), используя одни и те же электрические схемы.
    Арифметические действия с двоичными числами просты:
    0 + 0 = 0
    0 х 0 = 0
    0 + 1 = 1
    0 х 1 = 0
    1 + 1 = 0 (единица переходит в старший разряд)
    1 х 1 = 1
    Основным достоинством дополнительного кода является то, что в нем единообразно реализуются операции сложения чисел разных знаков (алгебраическое сложение), а операцию вычитания можно свести к операции сложения заменой знака вычитаемого на обратный.
    Сложение и вычитание чисел в обратном и дополнительном кодах выполняется с использованием обычного правила арифметического сложения многоразрядных чисел, при этом разряды, изображающие знаки чисел, рассматриваются как равноправные разряды двоичного числа, которые складываются друг с другом и с единицей переноса из предыдущего разряда числа по обычным правилам арифметики. Различия же обратного и дополнительного кодов связаны с тем, что делается с единицей переноса из старшего разряда.
    При сложении чисел в дополнительном коде единица переноса из старшего разряда игнорируется (теряется), а в обратном коде эту единицу надо прибавить к младшему разряду результата.

  7. Tauk Ответить

    Дополнительный код
    Дополнительный код положи­тельного числа совпадает с его прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы (20 – для целых чисел, 2-л – для дробных).
    Число
    Прямой код
    Обратный код
    Дополнительный код
    + 1110
    0,0001110
    0,0001110
    0.0001110
    -1110
    1,0001110
    1,1110001
    1,1110010
    Пример:
    А10 = +10; А2 = +1010; [А2]дк = [А2]ок = [А2]п = 0|1010
    В10 = –15; В2 = –1111; [В2]дк = [В2]ок + 20 = 1|0000+1 = 1|0001
    Основные свойства дополнительного кода:
    · сложение дополнительных кодов положительного числа С с его отрицательным значением дает т.н. машинную единицу дополнительного кода:
    МЕдк=МЕок + 20 = 10|00…00, т.е. число 10 (два) в знаковых разрядах числа;
    · дополнительный код называется так потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы МЕдк.
    Модифицированные обратные и дополнительные коды
    Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. В модифицированных обратном и дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «плюс», «11» — знаку «минус». Любая другая комбинация («01» или «10»), получив­шаяся в знаковых разрядах, является признаком переполнения разряд­ной сетки. Сложение чисел в модифицированных кодах ничем, не от­личается от сложения в обычных обратном и дополнительном кодах.
    Пример:
    А10 = +10; А2 = +1010; [А2]дк = [А2]ок = [А2]п = 0|1010
    [А2]мок = [А2]мдк = 00|1010
    В10 = –15; В2 = –1111; [В2]дк= [В2]ок+20 = 1|0000+1 = 1|0001
    [В2]мок= [В2]мдк= 11|0001
    Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» – об отрицательном переполнении. В настоящее время практически во всех компьютерах роль сдвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.
    Сложение и вычитание чисел со знаком в дополнительном коде
    Если оба числа имеют n–разрядное представление, то алгебраическая сумма будет получена по правилам двоичного сложения (включая знаковый разряд), если отбросить возможный перенос из старшего разряда. Если числа принадлежат диапазону представимых данных и имеют разные знаки, то сумма всегда будет лежать в этом диапазоне. Переполнение может иметь место, если оба cлагаемых имеют одинаковые знаки.
    Пример 1:
    6 – 4 = ?
    6 – положительное число с кодом 0110
    –4 – отрицательное число с дополнительным кодом 1100
    (перенос игнорируется): 6 – 4 = 2.
    Пример 2:
    –5 + 2 = ?
    2 – положительное число с кодом 0010
    –5 – отрицательное число с дополнительным кодом 1011
    Число с кодом 1101 является отрицательным, модуль этого числа имеет код 00112 = 310.
    http://book.kbsu.ru/theory/chapter4/1_4_12.html
    Арифметические действия в машинных кодах.
    Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице.
    Требуемая операция
    Необходимое преобразование
    А+В
    А+В
    А-В
    А+(-В)
    -А+В
    (-А)+В
    -А-В
    (-А)+(-В)
    Здесь А и В неотрицательные числа. Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей. При выполнении сложения цифр необходимо соблюдать следующие правила:
    1. Слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа.
    2. Знаковые разряды участвуют в сложении так же, как и значащие.
    3. Необходимые преобразования кодов производятся с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.
    4. При преобразовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом. При использовании ДК единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
    Пример 1. Сложить два числа: А10 = 7, В10 = 16.
    А2 = +111 = +0111; В2 = +10000.
    Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
    [A2]п = [A2]ок = [A2]дк = 0|00111; [В2]п = [В2]ок = [В2]дк = 0|10000.
    Сложение в обратном или дополнительном коде дает один и тот же результат:
    0|00111
    +0|10000
    ———-
    С2 = 0|10111
    С10 = +23
    Пример 2. Сложить два числа: А10 = +16, В10 = -7 в ОК и ДК.
    По таблице необходимо преобразование А+(-В), в которой второй член преобразуется с учетом знака
    [A2]п = [A2]ок = [A2]дк = 0|10000;
    [В2]п = 1|111 = 1|00111; [В2]ок = 1|11000; [В2]дк = 1|11001

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

  8. Люби такую Ответить

    В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Прямой код используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ. К кодам выдвигаются следующие требования:
    1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.
    2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
    Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд.
    Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.
    Знаковым разрядом обычно является крайний разряд в разрядной сетке. В дальнейшем при записи кода знаковый разряд от цифровых условимся отделять запятой. Если количество разрядов кода не указано будем предполагать, что под запись кода выделен один байт.
    Пример. В случае, когда для записи кода выделен один байт, для числа +1101 прямой код 0,0001101, для числа -1101 прямой код 1,0001101.
    Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
    Пример.
    Для числа +1101 прямой код 0,0001101; обратный код 0,0001101.
    Для числа -1101 прямой код 1,0001101; обратный код 1,1110010.
    Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
    Пример. Для числа +1101:
    Прямой код
    Обратный код
    Дополнительный код
    0,0001101
    0,0001101
    0,0001101
    Для числа -1101:
    Прямой код
    Обратный код
    Дополнительный код
    1,0001101
    1,1110010
    1,1110011
    Сложим числа, используя коды:
    Прямой код
    Сложение в обратном коде
    Сложение в дополнительном коде



    Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр.
    б) X= -101,Y= -11;
    1) Сложим числа, пользуясь правилами двоичной арифметики:

    2) Сложим числа, используя коды:
    Прямой код
    Сложение в обратном коде
    Сложение в дополнительном коде



    Так как сумма является кодом отрицательного числа (знак 1), то необходимо перевести результаты в прямой код:
    – из обратного кода
    (X+Y)обр=1,1110100 (X+Y)пр=1,0001011;
    – из дополнительного кода
    (X+Y)доп=1,1110101 (X+Y)пр=1,0001010+0,0000001=1,0001011.
    Таким образом, X+Y= -1011 и полученный результат совпадает с обычной записью.

  9. MUD Ответить

    · Впоследствии булева алгебра была обобщена от логики высказываний путём введения характерных для логики высказываний аксиом. Это позволило рассматривать, например, логику кубитов, тройственную логику (когда есть три варианта истинности высказывания: «истина», «ложь» и «не определено») и др.
    · Восьмери?чная систе?ма счисле?ния — позиционная целочисленная система счисления с основанием 8. Для представления чисел в ней используются цифры от 0 до 7.
    · Восьмеричная система часто используется в областях, связанных с цифровыми устройствами. Характеризуется лёгким переводом восьмеричных чисел в двоичные и обратно, путём замены восьмеричных чисел на триплеты двоичных. Ранее широко использовалась в программировании и вообще компьютерной документации, однако в настоящее время почти полностью вытеснена шестнадцатеричной.
    Двоичная система счисления используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1.
    Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки операционной системы, например, средствами Norton Commander в случае MS DOS. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.
    Десятичная система счисления используется для кодирования дискретного сигнала, потребителем которого является так называемый конечный пользователь – неспециалист в области информатики (очевидно, что и любой человек может выступать в роли такого потребителя). Используемые знаки для представления числа – цифры от 0 до 9.
    Непозиционная система счисления – система, в которой символы, обозначающие то или иное количество, не меняют своего значения в зависимости от местоположения (позиции) в изображении числа.
    Непозиционной системой счисления является самая простая система с одним символом (палочкой). Для изображения какого-либо числа в этой системе надо записать количество палочек, равное данному числу. Например, запись числа 12 в такой системе счисления будет иметь вид: IIIIIIIIIIII. Эта система неэффективна, так как форма записи очень громоздка.
    К непозиционной системе счисления относится и римская, символы алфавита которой и обозначаемое ими количество представлены в таблице.
    Римские цифры
    I
    V
    X
    L
    С
    D
    М
    Значение (обозначаемое количество)
    Представление чисел в ЭВМ. Примеры записи. Положительные и отрицательные числа в двоичной системе. Прямой и обратный код. Мантисса и порядок. Запись основания десятичной системы счисления в ЭВМ.
    Машинным изображением числа называют его представление в разрядной сетке ЭВМ. В вычислительных машинах применяются две формы представления чисел:
    естественная форма или форма с фиксированной запятой (точкой);
    нормальная форма или форма с плавающей запятой (точкой);
    Пример:
    (естественная форма) 452,34 = 452340*10-3 = 0,0045234*105 = 0,45234*103(нормальная форма)
    Всякое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме:
    X10 > X2 = M1 ? [102]r
    После этого осуществляется ещё одна важная процедура:
    мантисса с её знаком заменяется кодом мантиссы с её знаком;
    порядок числа с его знаком заменяется кодом порядка с его знаком.
    Указанные коды двоичных чисел – это образы чисел, которые и воспринимают вычислительные устройства. Каждому двоичному числу можно поставить в соответствие несколько видов кодов.
    Существуют следующие коды двоичных чисел:
    Прямой код;
    Обратный код;
    Дополнительный код.
    Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией сложения.
    Прямой код
    Представление числа в привычной форме “знак”-“величина”, при которой старший разряд ячейки отводится под знак, а остальные – под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.
    Положительные числа в ЭВМ всегда представляются с помощью прямого кода. Прямой код числа полностью совпадает с записью самого числа в ячейке машины. Вообще, положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде.
    Например,
    Прямой код отрицательного числа отличается от прямого кода соответствующего положительного числа лишь содержимым знакового разряда. Но отрицательные целые числа не представляются в ЭВМ с помощью прямого кода, для их представления используется так называемый дополнительный код.
    Прямой код двоичного числа(а это либо мантисса, либо порядок) образуется по такому алгоритму:
    1.Определить данное двоичное число – оно либо целое (порядок), либо правильная дробь (мантисса).
    2.Если это дробь, то цифры после запятой можно рассматривать как целое число.
    3.Если это целое и положительное двоичное число, то вместе с добавлением 0 в старший разряд число превращается в код. Для отрицательного двоичного числа перед ним ставится единица.
    Например,

  10. Starcaster Ответить

    В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Прямой код используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ. К кодам выдвигаются следующие требования:
    1) Разряды числа в коде жестко связаны с определенной разрядной сеткой.
    1) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд.
    Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд.
    Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.
    Знаковым разрядомобычно является крайний разряд в разрядной сетке. В дальнейшем при записи кода знаковый разряд от цифровых условимся отделять запятой. Если количество разрядов кода не указано будем предполагать, что под запись кода выделен один байт
    Пример. В случае, когда для записи кода выделен один байт, для числа +1101 прямой код 0,0001101, для числа -1101 прямой код 1,0001101.
    Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
    Пример.
    Для числа +1101 прямой код 0,0001101; обратный код 0,0001101.
    Для числа -1101 прямой код 1,0001101; обратный код 1,1110010.
    Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы


    Пример. Для числа +1101:
    Прямой код
    Обратный код
    Дополнительный код
    0,0001101
    0,0001101
    0,0001101
    Для числа -1101:
    Прямой код
    Обратный код
    Дополнительный код
    1,0001101
    1,1110010
    1,1110011
    Сложим числа, используя коды:
    Прямой код

    Сложение с применением обратного кода

    Сложение с применением дополнительного кода

    Так как результат сложения является кодом положительного числа (знак 0),
    то (X+Y)обр=(X+Y)доп=(X+Y)пр.
    б) X= -101,Y= -11;
    Сложим числа, пользуясь правилами двоичной арифметики:

    Сложим числа, используя коды:
    Прямой код

    Сложение в обратном коде

    Сложение в дополнительном коде

    Так как сумма является кодом отрицательного числа (знак 1), то необходимо перевести результаты в прямой код:
    – из обратного кода
    (X+Y)обр=1,1110100 (X+Y)пр=1,0001011;
    – из дополнительного кода
    (X+Y)доп=1,1110101 (X+Y)пр=1,0001010+0,0000001=1,0001011.
    Таким образом, X+Y= -1011 и полученный результат совпадает с обычной записью.

  11. Muslime Ответить

    Разр.c765432101112обр11110011+112доп11110100
    Попробуем выполнить операцию вычитания нашего числа (двенадцать) из двадцати девяти с помощью сложения. Для этого впишем двоичное представление числа двадцать девять в 8-ми разрядный регистр и прибавим к нему дополнительный код, полученный ранее из числа двенадцать. Возникающий при этом перенос из самого старшего разряда игнорируем.
    Разр.c76543210111111290001110112доп111101001700010001
    Мы видим, что результирующая сумма есть двоичное число семнадцать и это действительно соответствует разности чисел двадцать девять и двенадцать.

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

    Давайте посмотрим на последний пример с математической точки зрения. Что мы видим? Мы к числу 29 прибавили нечто непонятное и получили 17, то есть 29+x=17. Решив последнее уравнение, мы видим, что “x” – это не что иное, как число “-12” (минус двенадцать). Оказывается, формируя дополнительный код от некоторого числа, мы получаем число противоположное по знаку исходному. Этот факт подтолкнул создателей компьютеров к естественной и очень эффективной модели представления отрицательных чисел, да и вообще чисел со знаком.
    Идея состояла в том, чтобы хранить и обрабатывать положительные числа в прямом коде, а отрицательные в дополнительном. Необходимо было только как-то различать какое число перед нами положительное или отрицательное. Давайте, для наглядности сравним, как выглядят регистры с положительными числами и регистры с соответствующими им отрицательными числами, записанными в дополнительном коде.
    Число
    Код
    300000011
    500000101
    900001001
    -311111101
    -511111011
    -911110111
    Из анализа таблицы видно, что положительные числа начинаются с нулей, а отрицательные с единиц, что и позволяет в нашем примере отличать их по знаку. Но мы выбрали, для примера, небольшие положительные числа, в старшем разряде регистра которых изначально нет единицы. Но для числа “212” и соответственно “-212” это правило уже не срабатывает, так как число 212 изначально в старшем разряде регистра содержит единицу 21210 = 110101002.
    Разр.76543210212 11010100
    Однако, наша модель чисел с разными знаками всегда будет работать, если запретить пользоваться числами, модуль которых содержит единицу в старшем разряде регистра. Для 8-ми разрядного регистра это числа, модуль которых не превышает 127. Старший разряд регистра, при этом, просто указывает знак и поэтому, в данной модели представления чисел, его называют знаковым разрядом.

    Сложение чисел с разными знаками

    Рассмотрим пример сложения чисел с разными знаками, используя описанную выше модель представления чисел. Где старший разряд регистра указывает знак числа (ноль для положительного, единица для отрицательного) , а само отрицательное число представляется в дополнительном коде. Сложим, для примера, восьмиразрядные числа “21” (двадцать один) и “-30” (минус тридцать).
    Переведем их модули в двоичную систему счисления и запишем в 8-ми разрядные регистры.
    2110 = 101012 ; 3010 = 111102
    Разр.7654321021 00010101
    Разр.7654321030 00011110
    Чтобы получить число противоположное, по знаку, числу “30” возьмем от последнего дополнительный код. Сначала получим обратный код, инвертируя все разряды числа.
    Разр.7654321030обр11100001
    Теперь прибавим единицу и получим дополнительный код.
    Разр.c76543210130обр11100001+130доп11100010
    Мы получили машинное представление числа “-30” (минус тридцать), теперь сложим эти числа (21 и -30).
    Разр.c76543210210001010130доп11100010C11110111
    Проанализируем полученный результат. Мы видим, что в старшем (знаковом) разряде результата содержится единица, следовательно, результат есть число отрицательное и поэтому представлено оно в дополнительном коде. Значение этого числа сразу неочевидно и чтобы понять, что это за число, нам необходимо узнать его модуль.
    Из курса школьной математики известно, что модуль положительного числа есть само число, а модуль отрицательного числа есть число ему противоположное. Поэтому нам нужно получить число противоположное результату, а это мы уже знаем как сделать, нужно взять от него дополнительный код.
    Проделаем это по известной схеме – проинвертируем каждый разряд C = 11110111
    и получим Ci = 00001000. Теперь прибавим единицу.
    Разр.c76543210Сi00001000+1900001001
    Ну вот, модуль числа результата есть “9” (девять), а сам результат соответственно “-9”, что конечно же является правильным решением поставленной задачи: 21+(-30)= -9.
    Рассмотрим еще пример на сложение, вычислим “-30” (минус тридцать) плюс “40” (сорок) . Код для числа “-30” у нас уже есть, а число “40” в двоичной системе есть “101000”. Так как оно положительное , то запишем его в прямом 8-ми разрядном коде и прибавим к коду числа “-30”.
    Разр.c7654321011130доп1110001040001010001000001010
    Анализируя результат, мы видим, что старший знаковый разряд равен нулю, следовательно, результат есть число положительное и значит представлено оно в прямом коде, т.е. десять, что опять-таки является правильным решением поставленной задачи: -30+40= 10.

    Итоги, уточнеия и обобщения о кодах

    Давайте теперь уточним и обобщим все понятия, которыми мы пользовались, рассматривая вышеприведенные примеры. Итак, прежде всего, что такое код числа вообще и чем он отличается от самого числа? Код числа – это модель представления числа в цифровом устройстве. Например, в компьютере.
    Главным параметром любого кода является его разрядность. В рассмотренных выше примерах мы пользовались 8-ми разрядными кодами. Обратите внимание, что разрядность кода – это не то, что в математике называют разрядностью числа. Например, двоичное число три (11) двух разрядное, число пять (101) трех, десять (1010) четырех разрядное. Но все они могут быть представлены некоторым 8-ми разрядным кодом. При этом отсутствующие старшие разряды числа, в коде, представляются нулями. Очевидно, что мы не сможем в некотором коде представить число, разрядность которого больше разрядности кода. Поэтому специалисты по вычислительной технике, в своей профессиональной деятельности, под разрядностью чисел понимают разрядность кода.
    Кроме того, прежде чем кодировать числа, мы должны определиться, а какое собственно подмножество чисел мы собираемся кодировать? Если это натуральные числа, то потребуется один способ кодирования, кстати, самый простой. Для целых чисел уже нужно как-то кодировать знак числа и его модуль, а для кодирования рациональных чисел нужны еще более сложные коды. Так вот, прямой обратный и дополнительный код – это модели представления целых чисел, как положительных, так и отрицательных. Примеры записи некоторых чисел во всех трех восьмиразрядных кодах показаны в таблице ниже.
    Число
    Прямой код
    Обратный код
    Дополнительный
    код
    0000000000000000000000000
    1000000010000000100000001
    -1100000011111111011111111
    5000001010000010100000101
    -5100001011111101011111011
    8000010000000100000001000
    -8100010001111011111111000
    120011110000111100001111000
    -120111110001000011110001000
    127011111110111111101111111
    -127111111111000000010000001
    Во всех трех кодах старший разряд указывает на знак числа и он равен единице, если число отрицательное и нулю в противном случае. Остальные разряды содержат представление модуля числа. Различие между кодами наблюдается именно в способах представления модуля. Для положительного числа модуль во всех трех кодах представляется одинаково – это просто естественная запись двоичного числа. Для отрицательных чисел, в обратном коде это просто поразрядная инверсия прямого кода, а в дополнительном – к обратному коду, как к числу, просто прибавляется единица.
    …к списку решаемых задач

  12. Role player Ответить

    Неудобство представления чисел в форме с фиксированной точкой проявляется при решении задач, в которых фигурируют как очень малые так и очень большие числа В конкретных физических, математических и других задачах диапазон изменения величин может составлять, например от 10-30 до 1030. Можно убедиться, что в представлении с фиксированной запятой понадобились бы двоичные слова длинной около 256 бит (32 байт), по 128 бит на целую и дробную части. Однако работа ЭВМ с операндами такой длины была бы крайне неэффективной. Точность числа определяется не его длиной, а количеством верных значащих цифр.
    Для однозначности представления чисел с плавающей точкой используется нормализованная форма:
    A = m x q p,
    – где:
    m – мантиса числа,
    q – основание системы счисления,
    p – порядок числа.
    При этом q-1 |m| <1.
    Это означает, что мантиса должна быть дробью и иметь первую после запятой цифру, отличную от нуля.
    Число в форме с плавающей точкой занимает в памяти ЭВМ четыре или восемь байт (больше крайне редко). При записи числа с плавающей точкой выделяются разряды для хранения мантиссы, знака порядка, порядка
    Преобразуем десятичное число 555,55, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой:
    555,55 = 0,55555 * 103 .
    Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3.
    Так как числа с разными порядками суммировать нельзя, то для сложения двух чисел в нормальной форме представления необходимо выполнить операцию выравнивания порядков.


    где m1, m2 – мантиссы, р1 и р2 – порядки.
    Необходимо предварительно привести их к общему порядку, то есть преобразовать одно из слагаемых следующим образом:
    Робщ = max ( p1*p2 )
    В = (m2`)*qробщ
    C = A+B = m*qp = m1*qробщ+ m2`*qробщ= (m1+(m2`))*qробщ
    Преобразованная мантисса должна быть правильной дробью, поэтому преобразованию всегда подвергается меньшее слагаемое, так как в противном случае может произойти переполнение разрядной сетки мантиссы преобразованного числа.
    Меньший порядок увеличивается до большего, а мантисса преобразуемого числа сдвигается вправо на соответствующее число разрядов. С этой целью производится вычитание порядков чисел. Знак и модуль разности будут определять, соответственно, какое из слагаемых нужно преобразовать и на сколько нужно сдвинуть мантиссу.
    Пример:

    0.10112*2-1 + 0.10112*21 = 21*(00.00102 + 00.11012) = 01.00002*21 = 0.10002*22
    Мантисса может переполнить разрядную сетку, при этом использование модифицированных кодов позволяет не только отметить факт переполнения, но и восстановить правильный результат. Это обеспечивается сдвигом мантиссы на одну позицию в сторону младших разрядов и увеличением порядка на 1.
    Операция сложения для чисел, представленных в форме с плаваю­щей точкой
    При сложении чисел в нормальной форме можно выделить 4 этапа:
    1) Уравниваются порядки слагаемых.
    2) Производится преобразование мантисс слагаемых в один из модифицированных кодов, дополнительный или обратный, затем производится сложение мантисс по правилу сложения чисел с плавающей точкой.
    3) В случае необходимости производится нормализация результатов.
    4) Результат переводится в прямой код, ему приписывается общий порядок и округляется.
    Операция умножения для чисел, представленных в форме с плаваю­щей точкой, протекает аналогично, с той лишь разницей, что при этом добавляется операция опреде­ления порядка произведения алгебраическим сложе­нием порядков сомножителей и проводится, если необходимо, нормализация результирующей ман­тиссы с соответствующим изменением порядка произ­ведения.
    Если при суммировании порядков возникло пере­полнение и порядок произведения получился отри­цательный, то это означает, что искомое произведение меньше минимально представляемого в ЭВМ числа, и тогда в качестве результата операции может быть записан нуль без перемножения мантисс. Если же возникло переполнение для положительного порядка* то результат при этом может все-таки находиться в диапазоне чисел, представляемых в ЭВМ. Это объяс­няется тем, что при умножении мантисс происходит нарушение нормализации вправо, поэтому после нормализации мантиссы переполнение в порядке про­изведения.
    Операция деления чисел, представленных в форме с плавающей точкой, выполняется путем деления мантиссы делимого на мантиссу делителя; при этом порядок частного опреде­ляется разностью порядков делимого и делителя. Полученное частное нормализуется и ему присваивает­ся знак плюс, если делимое и делитель имеют одина­ковые знаки, и знак минус, если их знаки разные. Деление мантисс выполняется аналогично делению целых чисел с фиксированной точкой. Отличие состоит только в том, что делимое берется такой же разряд­ности, как и делитель. При этом полагается, что в младшей половине разрядов делимого содержатся нули. После сдвига влево очередного остатка ос­вобождающийся разряд заполняется нулем и деле­ние выполняется точно так же как и для целых чисел

  13. One Minute Ответить

    Обратный код
    Обратный код — метод вычислительной математики, позволяющий вычесть одно число из другого, используя только операцию сложения над натуральными числами. Ранее метод использовался в механических калькуляторах (арифмометрах). В настоящее время используется в основном в современных компьютерах.
    Обратный n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры 0), за которым следует n ? 1-разрядное двоичное представление модуля числа (обратный код положительного числа совпадает с прямым кодом).
    Пример. Двоичное представление числа 5 есть 101. Обратный 10-разрядный двоичный код числа +5 записывается как 0000000101.
    Обратный n-разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры 1), за которым следует n ? 1-разрядное двоичное число, представляющее собой инвертированное n ? 1-разрядное представление модуля числа. Следует отметить, что для изменения знака числа достаточно проинвертировать все его разряды не обращая внимания знаковый ли это разряд или информационные.
    Пример. Двоичное представление числа 5 есть 101, его 10-разрядное двоичное представление — 0000000101. Обратный 10-разрядный двоичный код числа ?5 есть 1111111010.
    Для преобразования отрицательного числа в положительное тоже применяется операция инвертирования. Этим обратные коды удобны в применении.[1] В качестве недостатка следует отметить, что в обратных двоичных кодах имеются два кода числа 0: «положительный нуль» 0000000000 и «отрицательный нуль» 1111111111 (приведены 10-разрядные обратные коды). Это приводит к некоторому усложнению операции суммирования. Поэтому в дальнейшем перешли к дополнительным кодам записи знаковых целых чисел.
    n-разрядный обратный код позволяет представить числа от ? 2n ? 1 + 1 до + 2n ? 1 ? 1.
    Дополнительный код — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение), либо вычитанием числа из нуля.
    Дополнительный код (дополнение до 2) двоичного числа получается добавлением 1 к младшему значащему разряду его дополнения до 1.
    Дополнение до 2 двоичного числа определяется как величина полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного дополнения до 2).

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *