zenn.skin 무료버전 배포중!
자세히보기

Python/Syntax

[Python] Bitwise 연산자를 이용한 홀/짝 판단

koosco! 2022. 3. 16. 21:39

(오늘 게시물에서 사용하는 AND, OR 연산자는 모두 Bitwise 연산자를 의미한다.)

홀수와 짝수를 판단할 때 2로 나눈 나머지를 이용해 판단할 수도 있지만 Bitwise 연산자를 이용해서 구하는 방법도 있다.

1. 2의 나머지를 이용한 홀수, 짝수 판단

num = int(input())
if num % 2 == 0:
	# 짝수인 경우
    print("Even")
elif num % 2 == 1:
	# 홀수인 경우
    print("Odd")

 

2. Bitwise 연산자를 이용한 홀수, 짝수 판단

- Bitwise 연산자를 이용해 홀수와 짝수를 판단하려면 우선 AND연산과 XOR연산에 대해 알아야 한다.

 

① AND 연산자(&)

  0 1
0 0 0
1 0 1

정수를 2진수를 이용해 나타내면 짝수인 경우 마지막 자리가 0, 홀수인 경우 마지막 자리가 1이 된다.

짝수와 홀수 각각에 대해 0 또는 1과의 AND 연산 결과는 다음과 같다.

  0 1
짝수 0 0
홀수 0 1

 

 

② XOR 연산자(^)

  0 1
0 1 0
1 0 1

XOR 연산은 연산하는 두 수가 같다면 1로, 다르다면 0으로 만드는 연산이다.

짝수와 홀수 각각에 대해 0 또는 1과의 XOR 연산 결과는 다음과 같다.

  0 1
짝수 짝수 짝수 + 1(홀수가 된다)
홀수 홀수 홀수 - 1(짝수가 된다)

 

 

③ 홀수와 짝수 판단

1) 홀수의 판단

- AND 연산의 결과를 보면 홀수와 1의 연산 결과만 1을 반환한다.

num = int(input())
if num & 1:
	print("Odd")
else:
	print("Even")

 

2) 짝수의 판단

- AND 연산을 통해 짝수를 판단할 수는 없으므로 XOR 연산을 통해 우선 홀수로 변한 한다.

- 변환한 수에 XOR 연산을 취한다.

num = int(input())
if (num ^ 1) & 1:
	print("Even")
else:
	print("Odd")

 

※ OR 연산이 아닌 XOR 연산을 사용해 짝수를 홀수로 바꾼 이유?

- 입력받은 수가 짝수인 경우에는 OR 연산을 사용해도 숫자를 홀수로 바꿔줄 수 있다. 하지만 홀수가 입력된 경우에도 OR 연산을 사용하면 홀수가 되기 때문에 OR 연산이 아닌 XOR 연산을 통해 값을 바꿔주어야 한다.

'Python/Syntax'의 다른글

  • 현재글 [Python] Bitwise 연산자를 이용한 홀/짝 판단

관련글