2015-10-05 10 views
1

Использование 6-bit арифметики дополнений двух, происходит ли переполнение в любом из этих случаев? Я считаю, что есть перенос b, но нет переполнения.Переполнение происходит в любом из этих случаев?

(a) 11001 + 01000 
(b) 10111 – 00110 
(c) 00111 + 01100 
(d) 10110 + 00011 

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

+0

Вы имеете в виду 5-битную или 6-битную арифметику? потому что вы говорите «6-бит» в вопросе, но ваши примеры состоят из 5 бит, что делает их положительными. – GabrielOshiro

+0

Я имею в виду 6. Если вы хотите увеличить длину бита в дополнении двое, вы перемещаете бит знака в крайнее левое положение и заполняете с копиями знакового бита. Для положительных чисел, заполнить нулями, а для отрицательных чисел - заполнить их. Это называется расширением знака. Знак не изменится. – FutureSci

+0

Если вы обнаружите бит переноса при вычитании 00110 из любого числа формы xxx11x, вы, вероятно, делаете что-то неправильно. –

ответ

1

При добавлении результат может быть больше, чем может быть использован в размере слова . Это условие называется переполнением.

В нашем случае мы используем 6-разрядную арифметику, поэтому мы можем представлять числа от -32 (100000) до + 31 (011111).

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

Так по вашей книге, у нас есть правилопереполнения, на странице 314.

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

Итак, давайте посмотрим все пункты:

(a) carry-out but no overflow 

    111001 -7 
+ 001000 +8 
    ------ -- 
1000001 +1 
(b) carry-out but no overflow 

    110111  -9 
+ 111000  -6 
    ------ --- 
1101111 -17 

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

Чтобы вычесть одно число (subtrahend) из другого (minuend), возьмите двойное дополнение (отрицание) вычитаемого и добавьте его в minuend.

(c) no carry-out, no overflow 

    000111  +7 
+ 001100 +12 
    ------ --- 
    010011 +19 
(d) no carry-out, no overflow 

    110110 -10 
+ 000011  +3 
    ------ --- 
    111001  -7 

Обратите внимание, что, в (a) и (b), есть бит переноса за пределы конца слова, которое игнорируется.

+0

Это как раз мое мышление. Должна быть ошибка в вопросе. Я думаю, мы должны использовать пять бит вместо 6 – FutureSci

 Смежные вопросы

  • Нет связанных вопросов^_^