알고리즘 code - 01
제목: 비트 연산 을 사용 하여 a 와 b 의 합, 두 개의 정수 a 와 b 를 구하 고 그 중에서 0 < = a, b < = 100 을 구하 십시오.
분석: a + b = a ^ b + (a & b) < 1
그 중에서 a ^ b 는 이 또는 연산 으로 본질 적 으로 불 진 덧셈 으로 볼 수 있 습 니 다.뒤의 a & b 는 연산 과 같은 위치 에서 모두 1 이면 결과 가 1 이 고 다른 상황 은 결과 가 0 이다. 우 리 는 연산 과 한 자 리 를 왼쪽으로 옮 기 면 진 위 연산 으로 볼 수 있다.그래서 이들 의 결합 은 완 성 된 덧셈 연산 이다.
문제 에서 비트 연산 으로 만 화 해 를 요구 하기 때문에 a + b 와 (a & b) < 1 도 두 수 를 더 하고 a + 0 = a 이기 때문에 우 리 는 상기 사고방식 의 마지막 '양자 결합' 을 재 귀 또는 순환 방식 으로 완성 할 수 있다.b = 0 으로 돌아 가 거나 순환 할 때 까지 return a;됐다.
코드:
//
public class Solution01 {
public int sum(int a,int b){
if (b == 0){
return a;
}
int sum = a ^ b;
int carry = (a & b) << 1;
return sum(sum,carry);
}
}
//
public class Solution02 {
int sum(int a,int b){
int sum = 0,carry = 0;
while (b!=0){
sum = a^b;
carry = (a&b)<<1;
a = sum;
b = carry;
}
return a;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.