Нужна помощь с вычитанием восьмеричного числа - PullRequest
0 голосов
/ 23 февраля 2019

Итак, я пытаюсь понять разницу между вычитанием восьмеричного числа без знака и со знаком, если восьмеричные числа были 6 битами.Например, восьмеричное 76 - восьмеричное 64: сначала я преобразую 76 в двоичный файл, который становится 111 110, а 64 - в двоичный, который становится 110 и 100:

Но проблема в том, что, если эти восьмеричные числа представляют 6-разрядный восьмеричный знак со знакомчисла, это будет означать, что 111 110 отрицателен, а 110 100 также отрицателен, означая, что оператор вычитания отменит со знаком минус второго восьмеричного числа, что приведет к сложению?Или мы просто относимся к этому нормально, вычитаем 2 двоичных числа, а затем смотрим на знак после?

1 Ответ

0 голосов
/ 23 февраля 2019

Ваше подписанное представление не должно иметь значения.

Возьмем, например, десятичное число -1, которое в 6-разрядном восьмеричном будет 077 (представляет восьмеричное с префиксом 0, предполагается, что представление дополнения 2).

Затем 077 - 077 = 000, как и ожидалось.В двоичном формате десятичное число -1 равно 111 111.Но - (- 1) равно 1, что является восьмеричным 001. 077 - 077 = 077 + 001 = 000, с урезанным переполнением.

Вы также можете напрямую рассмотреть арифметику с основанием 8.076 - 064 = 012.Вместо того, чтобы занимать 10, как в десятичном, вы берете 8. Рассмотрим 012 - 003.Вы берете 8 из 1 из 012 и добавляете его к 2. 00{8+2} - 003 = 007.

Если 076 подписано (при условии дополнения до 2), то в десятичном виде это -2.Точно так же 064 в десятичном виде -12.Разница составляет -2 - (-12) = 10, что в восьмеричном - 012. Нет разницы, подписано или нет.

Знаковое представление может быть наложено после арифметики.

...