Как ЦП выполняет вычитание?

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

Скажите 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?

7
задан phuclv 24 May 2019 в 01:42
поделиться