Существуют ли какие-либо общепринятые правила для двоичной арифметики смещения с регистрами фиксированной ширины в битах? - PullRequest
2 голосов
/ 20 июня 2019

Допустим, у нас есть два двоичных числа фиксированного размера (8-разрядных), например, 00000101 (5) и 00100000 (32)

Задача состоит в том, чтобы добавить их в двоичном смещении (более 128).Существуют ли какие-либо конкретные правила, касающиеся того, как это сделать?

Могу ли я, например, сначала преобразовать оба числа в двоичную запись смещения, затем добавить их и затем вычесть смещение (потому что я добавил его дважды)?Но если так, то как насчет переполнения, учитывая, что воображаемые регистры имеют ширину всего 8 бит?

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

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

1 Ответ

0 голосов
/ 20 июня 2019

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

Этот метод хорошо работает, когда смещение равно половинепервое число, которое переполняет регистр.Это относится к вам, поскольку смещение составляет 128, а 8-битный регистр переполняется на 256.Это особенно хорошо работает, когда два числа, которые вы хотите добавить, уже находятся в формате смещения.

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

В вашем случае вы добавляете 10000101 (5 в смещении) и 10100000 (32 в смещении).Добавление этих результатов в 00100101, поскольку происходит переполнение наиболее значимого бита.Отражение старшего значащего бита приводит к 10100101, который на самом деле равен 37 в формате смещения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...