2013-07-24 3 views
0

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

Прежде всего, на мой взгляд, вычитатель использует два комплимента, чтобы получить результат. Но почему он вычитает? например, комплимент двух из 5 (0101) равен 1011. Но это также положительный одиннадцать. Несмотря на то, что число становится отрицательным, что делает вычитатель воспринимать это как отрицательное число вместо другого положительного числа? Если проблема была 8 - 5, что мешает ей делать 8 +11? Что заставляет его распознавать бит бит с битом без знака? Я слышал, что программа работает решительно, но тогда вопрос будет заключаться в том, что дает программе возможность решить, добавлять или вычитать и как это интерпретировать в CPU и AlU.

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

И, наконец, как эта схема переключается от сложения к вычитанию? Единственный вычитатель, который мне показывали, - это сумматор с не связанными с ним воротами? Как схема отличается тем, что может изменять функции?

ответ

0

Вычитание - это не что иное, как добавление, при этом второй операнд является отрицательным числом. Дополнение Two построено так, что добавление с отрицательным числом просто работает как ожидалось (при игнорировании переполнения).

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

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

+0

Благодарим вас за ответ, но я все еще не понимаю свой первый вопрос ... Как сделать комплимент двух, если один и тот же номер можно добавить для другого результата? Чтобы снова использовать этот пример. Два комплимента два из 5 также 11. Итак, если вы пытались сделать 8 - 5 через вычитатель, что в этом вычитателе заставляет получить результат 8 - 5 вместо 5 + 11? Если это не нужно знать, то как это приводит к другому результату? –

+0

Извините, но я подумал о том, как лучше перефразировать, как я думаю об этом. Допустим, я хотел вычесть 1 и 1 и поставить лампочки в конце вычитателя для представления моего результата. Конечно, он вычитает, ни лампочка не будет включена. Вычитатель отрицает число, а затем добавляет его перед добавлением. Итак, 1 отрицание равно 0 плюс один по-прежнему равен 1. Так как у вычитателя есть такая же схема, как сумматор, почему он просто не добавляет 1 и 1 (поскольку эти результаты являются результатом после отрицания) вместо вычитания? Что делает это результатом вместо света (10) вместо света (10) вместо этого (00)? –

+0

Я понятия не имею, что вы пытаетесь рассказать с помощью примера лампочки. Вы говорите, что -5 и 11 - это одинаковое число, и вы можете быть правы. Но это только средство 11 слишком велико для этого конкретного ALU (это переполнение). В любом случае, в 4-битной системе 1 есть '0001', а -1 -' 1111', поэтому '0001 + 1111 = 0000'. –

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