У меня есть некоторые основные сомнения, но каждый раз, когда я сажусь, чтобы попробовать свои силы в вопросах собеседования, эти вопросы и мои сомнения всплывают.
Скажите A = 5, B = -2. Предполагая, что A и B являются 4-байтовыми, как ЦП выполняет сложение A + B
?
Я понимаю, что A будет иметь знаковый бит (MSB) как 0 для обозначения положительного значения и B будет иметь знаковый бит, равный 1, чтобы обозначить отрицательное целое число.
Теперь, когда в программе C ++ я хочу вывести A + B
, сначала выполняет ли модуль сложения ALU (Arithmetic Logic Unit) проверьте знаковый бит, а затем решите выполнить вычитание, а затем выполните процедуру вычитания. Мой следующий вопрос - как выполняется вычитание.
A = 5
B = 2
Я хочу выполнить A - B
. Компьютер возьмет дополнение B до 2, добавит дополнение A + 2 к B и вернет это (после отбрасывания лишнего бита слева)?
A = 2
B = 5
для выполнения A - B
. Как компьютер работает в этом случае?
Я понимаю, что любая условная логика «если-то» и т. Д. Будет реализована аппаратно внутри ALU. вычисление 2-х дополнений и т. д., отбрасывание лишних битов все будет выполняться аппаратно внутри ALU. Как выглядит этот компонент ALU?