이 기사에서는 +, ++, - 또는 --와 같은 산술 연산자를 사용하지 않고 두 개의 숫자를 더하는 방법을 볼 것입니다.
이 문제를 해결하기 위해 이진 가산기 논리를 사용하여 해결할 수 있습니다. 이 경우 우리는 반가산기와 전가산기를 설계했습니다. 이 가산기는 1비트 이진수를 더할 수 있습니다. 여러 가산기를 계단식으로 연결하여 더 큰 수를 더하는 회로를 만들 수 있습니다.
그 가산기에서 우리는 숫자 사이에 XOR 연산을 수행한 다음 캐리에 대해 AND 논리를 수행했습니다. 이러한 기능은 여기에 두 개의 숫자를 추가하기 위해 구현됩니다.
예시 코드
#include <iostream> using namespace std; int add(int a, int b) { while (b != 0) { //until there is no carry, iterater int carry = a & b; //find carry by anding a and b a = a ^ b; //perform XOR on a and b, and store into a b = carry << 1; //the carry is shifted one bit to the left, and store it to b } return a; } int main() { int a, b; cout << "Enter two numbers to add: "; cin >> a >> b; cout << "The result is: " << add(a, b); return 0; }
출력
Enter two numbers to add: 56 23 The result is: 79