(오늘 게시물에서 사용하는 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] 문자열 자료형을 datetime, date 자료형으로 변환 (0) | 2022.05.26 |
---|---|
[Python] 논리 연산자와 Bitwise 연산자 차이점 (0) | 2022.03.16 |
[Pandas] DataFrame - 2 (행/열 추가, 값 선택/변경, 전치) (1) | 2022.01.10 |
[Pandas] DataFrame - 1 (자료형, 생성, 행/열 이름변경, 행/열 삭제) (0) | 2022.01.10 |
[Python] Pickle (0) | 2021.12.11 |