Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 숫자 중 하나가 다른 숫자의 보수인지 확인하십시오.

<시간/>

두 개의 숫자 x와 y가 있다고 가정합니다. 이 두 숫자 중 하나가 다른 숫자의 1의 보수인지 확인해야 합니다. 우리는 모두 이진수의 1의 보수가 0에서 1로 또는 1에서 0으로 모든 비트를 뒤집는다는 것을 알고 있습니다.

따라서 입력이 x =9, y =6과 같으면 이진 표현이 서로의 보수인 x =1001 및 y =0110이므로 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • z =x XOR y
  • z의 모든 비트가 설정되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def all_one(n):
   if n == 0:
      return False;
   if ((n + 1) & n) == 0:
      return True
   return False
def solve(x, y):
   return all_one(x ^ y)
x = 9
y = 6
print(solve(x, y))

입력

9, 6

출력

True