두 개의 숫자 m과 n을 받는 JavaScript 함수 add()를 작성해야 합니다. 함수는 네 가지 기본 산술 연산을 사용하지 않고 입력으로 취한 두 숫자를 더하고 합계를 반환해야 합니다.
예시
이에 대한 코드는 -
const m = 67, n = 33; const add = (x, y) => { while(y !== 0){ let carry = x & y; x = x ^ y; y = carry << 1; }; return x; }; console.log(add(m, n));
설명
두 비트를 XOR(^)하여 두 비트의 합을 구할 수 있습니다. 그리고 두 비트의 AND(&)를 수행하여 캐리 비트를 얻을 수 있습니다.
여기서 우리는 2개의 정수를 더하기 위해 2개의 단일 비트를 추가하는 데 사용할 수 있는 Half Adder 논리의 확장 버전을 사용했습니다. x와 y가 같은 위치에 비트를 설정하지 않은 경우 x와 y의 비트 XOR(^)은 x와 y의 합을 제공합니다.
공통 세트 비트도 통합하기 위해 비트 AND(&)가 사용됩니다. x와 y의 비트 AND는 모든 캐리 비트를 제공합니다. (x &y) <<1을 계산하고 x ^ y에 추가하여 필요한 결과를 얻었습니다.
출력
콘솔의 출력은 -
100