두 개의 숫자 x와 y가 있다고 가정합니다. 이 두 숫자가 1비트 위치에서 다른지 여부를 확인해야 합니다.
따라서 입력이 x =25 y =17과 같으면 x =11001이고 y =10001이므로 출력은 True가 됩니다. 1비트 위치만 다릅니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- z =x XOR y
- z의 설정 비트 수가 1이면
- 참 반환
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
def bit_count(n): count = 0 while n: count += n & 1 n >>= 1 return count def solve(x, y): return bit_count(x ^ y) == 1 x = 25 y = 17 print(solve(x, y))
입력
25,17
출력
True