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

Переполнение разрядной сетки

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

Пример:
A=+0,101 [A]доп
= 0,101

B=+0,110 [B]доп
= 0,110

[A+B]доп
= 1,011

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

Для обнаружения переполнения
можно использовать следующие признаки:

– знаки слагаемых не совпадают со знаком
суммы;

– есть перенос
только в знаковый или только из знакового
разряда.

Функция переполнения имеет вид:f=П1П2+ П1П2= П1П2.

Если при сложении чисел с фиксированной
запятой возникло переполнение, то
вырабатывается сигнал переполнения
разрядной сетки и вычисления прекращаются.

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

Пример:A=- 0,101
[A]доп
= 1,011

B=- 0,011 [B]доп
= 1,101

[A]доп+[B]доп
= 1,000

Модифицированные коды

Для обнаружения переполнения разрядной
сетки можно использовать модифицированные
коды. Модифицированные коды отличаются
от обычных кодов тем, что знак числа
кодируется двумя разрядами. При выполнении
алгебраического сложения или вычитания
два знаковых разряда участвуют в операции
как равноправные цифровые разряды.
После выполнения операции содержимое
знаковых разрядов определяет знак
результата (левый знаковый разряд) и
наличие переполнения (несовпадение
знаковых разрядов): комбинация 01 фиксирует
переполнение при сложении положительных
чисел (положительное переполнение), а
10 – отрицательных (отрицательное
переполнение).

А=+0,101 [A]
мод
доп
= 00,101

B=+0,110 [B]
мод
доп
= 00,110

[A]моддоп+[B]
мод
доп
= 01,011

А=-0,101 [A]
мод
доп
= 11,011

B=-0,110 [B]
мод
доп
= 11,010

[A]моддоп+[B]
мод
доп
= 10,101

Функция
переполнения имеет вид:f=Зн1
Зн2 + Зн1 Зн2 = Зн1 
Зн2.

Логическая схема формирования единичного
сигнала при возникновении переполнения
приведена на рис 2.

Машинные формы представления чисел

Существуют
два основных способа представления
данных в ЭВМ: с фиксированной
и плавающей запятой.

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

целая
часть

дробная
часть

Определим диапазон представления
чисел для этого формата.

Аmax=(2k-1)+(1-2l),

где
k – число
разрядов целой, а l
– дробной части числа (k+l=n).

В зависимости
от размеров целой и дробной частей
возможно следующее:

±
, 1 1
. . .
1 1

1)
k=0, l=n Amax=1-2-n

±
1 1 . . .
1 1,

2)
k=n, l=0 Amax=2n-1

±
, 0 0
. . .
0 1

3)
k=0, l=n Amin=2-n

±
0 0 . . .
0 1,

4)
k=n, l=0 Amin=1

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

Представление чисел в форме с плавающей
запятой.
В общем виде числа с плавающей
запятой имеют следующий вид:

A=mArpA,

где mA
мантисса, арA
порядок числа А. Порядок (с учетом знака)
показывает, на сколько разрядов и в
какую сторону сдвинута запятая при
замене формы записи числа с естественной
на нормальную.

Например, А10= 239,745 = 0,239745·103= 239745·10-3.

Наиболее
распространено и удобно для представления
в ЭВМ ограничение вида r-1≤mA1.

Форма представления чисел, для которых
справедливо данное ограничение,
называется нормализованной. Так
как абсолютное значение мантиссы в этом
случае лежит в диапазоне отr-1до 1-rn,
гдеn– число разрядов
мантиссы без знака, то положение разрядов
числа в его машинном изображении
непостоянно. Отсюда и название этой
формы представления чисел – с плавающей
запятой. Формат машинного изображения
чисел с плавающей запятой должен включать
знаковые поля (мантиссы и порядка), поле
мантиссы и поле порядка числа и имеет
следующий вид:

мантисса
mA

порядок
p

Для
данного формата разрядной сетки можно
записать следующий диапазон представления
чисел:

Для упрощения операций над порядками
применяют представление чисел с плавающей
запятой со смещенным порядком:
p=p+N,
гдеN– целое положительное
число (смещение),N=max(-p).
ОбычноN=2k,
гдеk- число двоичных
разрядов в поле цифр несмещенного
порядка. В этом случае поле знака порядка
избыточно, так какpвсегда положительно. Такие смещенные
порядки называютхарактеристиками.
В зависимости от типа данных числа с
плавающей запятой в памяти ЭВМ хранятся
в одном из следующих трех форматов:

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

В
стандарте IEEEкрайние
значения порядка (характеристики)
зарезервированы и не используются для
представления обычных чисел. Максимальное
значение характеристики, представленное
всеми единицами при положительном знаке
числа, зарезервировано для представления
значения (+ ∞) при нулевой мантиссе. При
знаке минус число с максимальной
характеристикой используется для
представления (- ∞) и неопределенности.
Значение с минимальной характеристикой,
равной нулю, зарезервировано для
представления денормализованных чисел
(положительных и отрицательных), а также
для представления нуля (представляется
всеми нулями), причем различают +0 и –0.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

Пример 6. Сложить два числа А = + 1101,1 и В = + 1011,0 (n=4, m=1) в обратном коде.

Решение. [A]обр = 0.1101,1

[B] обр = 0.1011,0

[C] обр = 1.1000,1

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

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

Пример 7. Сложить два числа А = — 1011 и В= — 1101 (n=4, m=0) в дополнительном коде.

Решение: [A]доп = 1.0101

[B]доп = 1.0011

[C]доп = 0.1000.

Для обнаружения переполнения разрядной сетки используют следующие способы:

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

2. Второй способ основан на применении модифицированных кодов. Модификация кодов заключается во введении дополнительного разряда, который располагается перед знаковым. Этот разряд часто называют разрядом переполнения. Иногда говорят, что модифицированные коды содержат два знаковых разряда. Положительные числа имеют в знаковых разрядах два нуля, отрицательные – две единицы. При использовании модифицированных обратного и дополнительного кодов признаком переполнения разрядной сетки является наличие в знаковых разрядах различных цифр 01 или 10.

Пример 8. Сложить числа А1= +1011 и В1= +1101, А2= -1100 и В2= -1101 (n=4, m=0) соответственно в модифицированных дополнительном и обратном кодах.

Решение.

В обоих примерах произошло переполнение разрядной сетки.

При несовпадении знаковых разрядов в модифицированных кодах вырабатывается сигнал переполнения разрядной сетки.

Порядок выполнения работы

Содержанием работы является: 2 схемы одноразрядных двоичных сумматоров, схема 8-ми разрядного двоичного сумматора параллельного действия, построение схем с использованием программы«ЕВЕМА-2» и контроль правильности их работы.

Работу рекомендуется выполнять в следующей последовательности:

— по таблице истинности одноразрядного двоичного сумматора получить выражения для сигналов суммы и переноса в булевом базисе;

— набрать на компьютере комбинационную схему одноразрядного двоичного сумматора;

— набрать на компьютере комбинационную схему 8-ми разрядного двоичного сумматора;

— выполнить сложение заданных чисел в обратном и дополнительном кодах;

— проверить правильность работы схемы, задавая на ее входах значения чисел в обратном и дополнительном кодах.

Статьи к прочтению:

  • Перевод чисел из одной позиционной системы счисления в другую позиционную систему счисления
  • Перевод чисел в системах счисления с кратными основаниями

Разрядная сетка с фиксированной запятой

Похожие статьи:

  • Тема 2.3. построение геометрических объектов по сетке

    РЕЖИМ ПОСТРОЕНИЯ ПО СЕТКЕ Когда Вы работаете с чертежом, иногда бывает удобно включить изображение сетки на экране и назначить привязку к ее узлам. При…

  • Разрядные операционные системы семейства windows

    КУРСОВАЯ РАБОТА По дисциплине «Операционные системы» Исполнитель: ст. гр. 4301 Галиева Д.М. Руководитель: Шалагин С. В. Оценка_________________…

Обновлено: 18.05.2023

Для таких чисел методика выполнения операций сложения и вычитания чисел произвольного знака в дополнительном и обратном кодах, включая признаки переполнения разрядной сетки , ничем не отличается от методики сложения и вычитания целых чисел. [19]

Однако при выходе модуля результата за пределы единицы в знаковых разрядах появляется неправильность – сочетание 10 или 01, что служит признаком переполнения разрядной сетки . [20]

Как видно из примеров, в знаковых разрядах полученной суммы положительных слагаемых имеем комбинацию 01, отрицательных – 10, являющихся признаками переполнения разрядной сетки . [21]

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

Результат сложения двух положительных или двух отрицательных чисел по абсолютной величине может превысить допустимый диапазон, что приведет к переполнению разрядной сетки, а следовательно, к искажению результата, поэтому они недопустимы. Одним из признаков переполнения разрядной сетки машины может служить появление в разряде знаков результата единицы при сложении положительных чисел или цифры нуль при сложении отрицательных чисел. Такой способ выявления переполнения неудобен тем, что требует запоминания кодов знаков слагаемых. [23]

Блок индикации предназначен для визуального контроля вводимых в машину данных и считывания результатов вычислений. Кроме того, этот блок показывает признак переполнения разрядной сетки . [24]

Кроме того, устройства непозиционного преобразования являются базовыми для схемной реализации многих способов выполнения операций определения знака числа и признака переполнения разрядной сетки , контроля и коррекции вычислений, умножения и ряда других. Ниже мы рассмотрим математическую основу устройств первого типа и их аппаратную реализацию. [25]

Применение дополнительного или обратного кода для представления отрицательных чисел упрощает операцию алгебраического сложения. Алгебраическое сложение чисел с разными знаками заменяется арифметическим сложением кодов, при этом автоматически получается код знака результата. Однако остается нерешенным вопрос о выработке признака переполнения разрядной сетки . [26]

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

В ЭВМ такая ситуация отслеживается блоком прерывания и в случае переполнения программа снимается с обработки.

Признаки переполнения(способы определения переполнения):

1) По наличию и отсутствию переноса в знаковый и из знакового разряда:

переполнение возникает в том случае, если возникает единица переноса в знаковый разряд и отсутствует единица переноса из знакового разряда. Либо имеется единица переноса из знакового

разряда и отсутствует единица переноса в знаковый разряд.

Переполнение отсутствует, если существуют единицы переноса и в знаковый разряд и из знакового разряда или обе единицы переноса отсутствуют.

0.101 +5 прямой код 0.100 +4 прямой код

1.010 -5 обратный код 1.011 -4 обратный код

0.100 +4 прямой код

Имеется один перенос в знаковый разряд, перенос из знакового разряда отсутствует.

1.011 -4 обратный код

Имеется один перенос из знакового разряда, перенос в знаковый разряд отсутствует.

2) Модифицированное кодирование:

При модифицированном кодировании под знак числа отводится два или более разрядов.

Комбинация 00 соответствует положительному числу.11 – отрицательное число.

00.100 +4 прямой модифицированный код

Комбинация 01 в знаковом разряде соответствует переполнению разрядной сетки.

11.011 -4 обратный модифицированный код

Комбинация 10 в знаковом разряде соответствует переполнению разрядной сетки.

Пример для дополнительного модифицированного кода:

11.100 -4 дополнительный модифицированный код

00.001 +1 прямой код

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

11.011 -5 дополнительный модифицированный код

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

11.001 -1 прямой код

11.100 – 4 дополнительный модифицированный код

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

Формы представления чисел в ЭВМ.

Любая информация(числа, команды и т.д.) представляются в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. В ЭВМ слова часто разбивают на части, называемые слогами или байтами. В современных ЭВМ широко используется байт, содержащий 8 бит(разрядов).

Двоичный разряд представляется в ЭВМ некоторым техническим устройством, например триггером, двум различным состояниям которого приписывают значения 0 и 1. Набор соответствующего количества таких устройств служит для представления многоразрядного двоичного числа(слова).

Свидетельство и скидка на обучение каждому участнику

Зарегистрироваться 15–17 марта 2022 г.

Признак переполнения разрядной сетки

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

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

При положительном переполнении результат операции положительный, а при отрицательном переполнении – отрицательный.

Если и в знаковый, и из знакового разряда суммы есть переносы или этих переносов нет, то переполнение отсутствует.

Рассмотрим простейшие примеры с трехбитовыми словами. Диапазон чисел, которые они представляют, равен от -4 до +3. В рассматриваемых словах 1 бит знака и 2 информационных бита.

1. Алгебраическое суммирование без переноса.

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

Результат – положительное число в ПК, равное 3.

2. Алгебраическое суммирование с двумя переносами.

Имеются переносы в знаковый разряд и из знакового разряда вычисляемой суммы, поэтому переполнения нет.

Результат – отрицательное число в ДК, равное -4.

3. Алгебраическое суммирование с одним переносом.

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

Число 4 нельзя представить в прямом коде. Формальный результат равен -4.

4. Алгебраическое суммирование с одним переносом.

Число -5 нельзя представить 3-битовой комбинацией. Формальный результат равен +3.

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

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

Пример 6. Сложить два числа А = + 1101,1 и В = + 1011,0 (n=4, m=1) в обратном коде.

Решение. [A]обр = 0.1101,1

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

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

Пример 7. Сложить два числа А = — 1011 и В= — 1101 (n=4, m=0) в дополнительном коде.

Решение: [A]доп = 1.0101

Для обнаружения переполнения разрядной сетки используют следующие способы:

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

2. Второй способ основан на применении модифицированных кодов. Модификация кодов заключается во введении дополнительного разряда, который располагается перед знаковым. Этот разряд часто называют разрядом переполнения. Иногда говорят, что модифицированные коды содержат два знаковых разряда. Положительные числа имеют в знаковых разрядах два нуля, отрицательные – две единицы. При использовании модифицированных обратного и дополнительного кодов признаком переполнения разрядной сетки является наличие в знаковых разрядах различных цифр 01 или 10.

Пример 8. Сложить числа А1= +1011 и В1= +1101, А2= -1100 и В2= -1101 (n=4, m=0) соответственно в модифицированных дополнительном и обратном кодах.

В обоих примерах произошло переполнение разрядной сетки.

При несовпадении знаковых разрядов в модифицированных кодах вырабатывается сигнал переполнения разрядной сетки.

Порядок выполнения работы

Работу рекомендуется выполнять в следующей последовательности:

— по таблице истинности одноразрядного двоичного сумматора получить выражения для сигналов суммы и переноса в булевом базисе;

— набрать на компьютере комбинационную схему одноразрядного двоичного сумматора;

— выполнить сложение заданных чисел в обратном и дополнительном кодах;

— проверить правильность работы схемы, задавая на ее входах значения чисел в обратном и дополнительном кодах.

Статьи к прочтению:

Разрядная сетка с фиксированной запятой

Похожие статьи:

РЕЖИМ ПОСТРОЕНИЯ ПО СЕТКЕ Когда Вы работаете с чертежом, иногда бывает удобно включить изображение сетки на экране и назначить привязку к ее узлам. При…

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

      

  • Переход европы от античности к феодализму кратко
  •   

  • Начальник отдела ит обязанности кратко
  •   

  • Экологические проблемы алматы кратко
  •   

  • Охарактеризуйте внутриполитический кризис 1999 г кратко
  •   

  • Острая лучевая болезнь кратко

19. Контроль
переполнения при сложении кодов
. Сдвиги


(лекция 19)


  • переполнение прямого кода,
  • контроль переполнения сравнением знаковых
    цифр,
  • использование модифицированных кодов,
  • контроль переносов,
  • виды сдвигов,
  • вывод правил арифметического сдвига.

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

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

а) анализ знаковых цифр операндов и результата операции.
Обозначим знаковые цифры слагаемых
B,
C
и суммы A соответственно b,
c
и a. Переполнение возможно только
при одинаковом знаке слагаемых. Оно должно
обнаруживаться получением неверного знака
суммы, не совпадающего со знаком слагаемых.
Признак (флаг) переполнения
OF определяет логическая формула


Этот способ не может быть применен, в
частности, при одноадресном сложении из-за
невозможности одновременного чтения знаковых
цифр обоих операндов;

б) контроль с применением модифицированных кодов состоит в
использовании двух знаковых цифр вместо одной.
Общее число цифр в модифицированном коде
получается равным
n + 1. Так как сложение двух n – 1 – разрядных
модулей не может дать сумму с более, чем с n
-разрядным модулем, старшая из двух знаковых цифр
всегда сохраняет правильное изображение знака.
Младшая из знаковых цифр при переполнении
инвертируется, следовательно, признаком
переполнения является несовпадение знаковых
цифр. Примеры сложения модифицированных
дополнительных кодов (обозначения кодов такие
же, как в предыдущей лекции, двойные угловые
скобки означают дополнительный код):


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

Для преобразования обычного кода в
модифицированный, знаковая цифра операнда
направляется сразу на два входа сумматора – в
разряды с номерами
n – 1 и n. Сумматор соответственно
должен иметь увеличенную разрядность. Обе
знаковые цифры участвуют в сложении наряду с
цифрами модуля (или дополнения), как это и должно
быть при применении дополнительного или
обратного кода. Примеры с обратным
модифицированным кодом:


Логический признак переполнения при
этом способе выражается как

;

в) контроль по значению переносов CR[n
– 1] (в знаковый разряд)
и
CR[n]
(из знакового разряда). В принципе этот способ
аналогичен предыдущему, но не требует увеличения
разрядности сумматора и регистра-аккумулятора.
Нужно только соединить цепи переносов сумматора
с логической схемой, реализующей функцию
. На практике эти способы
применяются в неявной форме, флаг
OF выставляется на основании
логического анализа ситуации
.


Сдвиг двоичного числа влево на k разрядов
эквивалентен умножению его на
,
сдвиг вправо – делению на
.
Крайние цифры при сдвиге теряются. Эти общие
положения справедливы для любых чисел и любых
кодов, но в деталях имеются отличия.

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

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


Таблица 4.1

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

Сдвиг дополнительного кода на один
разряд вправо, то есть деление дополнения модуля
числа на два можно описать формулой

.

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

Следует иметь в виду, что величина А/2
представляется неточно: потеря младшей цифры
кода, если это была единица, означает округление
дополнения в меньшую сторону, а модуля числа – в
большую. Пример:

Соответствующая формула для обратного
кода:

Здесь до верного кода опять недостает и эта единица добавляется в
освободившийся разряд. Что касается излишка +1/2,
который нужно устранить, то он соответствует
вышедшей из разрядной сетки цифре. Если код до
сдвига оканчивался единицей, то ошибка
округления отсутствует. И наоборот, ошибка
возникает, если код до сдвига оканчивался нулем.
Дополнение при этом округляется в большую
сторону, а модуль числа – в меньшую. Аналогичные
рассуждения проделаем для сдвига влево.
Умножение отрицательного двоичного числа на 2, то
есть сдвиг его на один разряд влево в
дополнительном коде можно описать формулой:


.

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

В обратном коде соответственно
получится

.

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

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

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

Арифметический
сдвиг и сдвиг кода могут выполняться как
элементарные операции в составе микропрограмм
умножения и деления, а также и самостоятельно,
как операции ассемблера, доступные программисту.
В дополнение к описанным в данной лекции видам
сдвигов (логический сдвиг
SHL и SHR и арифметический SAL и SAR) ассемблер содержит еще
команды циклического сдвига:
ROL и ROR и циклического сдвига через
триггер переноса:
RCL и RCR.


Содержание

Hosted by uCoz

Добавить комментарий