는 회로 설계자는 두 개의 숫자를 추가하는 방법입니다. 평행 한 왼쪽 모서리가있는 가운데의 두 개는 AND (&)이고 마지막 단일 모서리가 왼쪽 모서리 인 마지막 두 개는 OR (|)입니다.).
이제 마스크를 사용하여 한 번에 한 비트 씩 코드로 변환 할 수 있습니다.
public int add(final int A, final int B) {
int mask = 1;
int sum = 0;
int carry = 0;
for (int i = 1; i <= Integer.SIZE; i++) { //JVM uses 32-bit int
int a = A & mask; //bit selection
int b = B & mask;
//sum uses |= to preserve the history,
//but carry does not need to, so it uses =
sum |= a^b^carry; //essentially, is the sum of bits odd?
carry = ((a & b) | ((a^b) & carry)) << 1; //are exactly two of them 1?
mask <<= 1; //move on to the next bit
}
return sum;
}
평범하지 않은 숫자를 연결하면 틀린 것을 알게됩니다. 추가 기능은 차례로 연결해야합니다. (힌트 : 루프가 필요함) – Mysticial
이 두 숫자의 예를 들어 줄 수 있습니까? – Phoenix
'3 + 1'은 지금까지의 대답에서 주어진 것입니다. 쇠사슬로 묶인 물건이 있으면 '63 + 1', 127 + 1 등으로 잘못 될 것입니다 ... – Mysticial