티스토리 뷰
👉 비트 연산자
비트 연산자 | ||
& | 논리 곱 (AND) 연산자 | 피연산자 의 값이 모두 1이면 1을 반환 |
| | 논리 합 (OR) 연산자 | 피연산자 중 한 쪽의 값이 1이면 1을 반환 |
^ | 배타적 논리합(XOR) 연산자 | 피연산자 중 값이 서로 다를 때 1을 반환 |
~ | 보수(NOT) 연산자 | 피연산자를 0은 1로, 1은 0으로 반전 |
<< | 비트를 왼쪽으로 n 칸 이동 | 첫 번째 피 연산자의 비트를 두 번째 피연산자의 수(n)만큼 왼쪽으로 이동 |
>> | 비트를 오른쪽으로 한 칸 이동 | 첫 번째 피 연산자의 비트를 두 번째 피연산자의 수(n)만큼 오른쪽으로 이동 ※주의※ 부호연산자는 유지된다 |
✔ 비트 연산자는 단순 정수형 변수에만 사용할 수 있다.
✔ 논리 시프트 : 무조건 0으로 채워준다
✔ 산술 시프트 : 이동 후, 빈 공간을 부호 비트로 채워준다 (파이썬)
n 1001 0000 0000 0100
n>>1 1100 1000 0000 0010
n>>2 1110 0100 0000 0001
✔ 파이썬은 산술 시프트 연산을 하므로, 음수의 경우 부호 비트를 1로 유지한다.
✔ 부호 비트는 유지됨과 동시에 부호 비트가 계속 밀리므로 주의하자.
x = 3
y = 5
x 는 0000 ..... 0011
y 는 0000 ..... 0101
& 연산 0000 ..... 0001
print(x&y) #1
x = 3
y = 5
x 는 0000 ..... 0011
y 는 0000 ..... 0101
| 연산 0000 ..... 0111
print(x|y) #7
x = 3
y = 5
x 는 0000 ..... 0011
y 는 0000 ..... 0101
^ 연산 0000 ..... 0110
print(x^y) #6
print(x^x) #0
👉 논리 검증
✔ 프로그램과 논리 회로는 다르다. 프로그램은 뻔히 아는 결과는 확인하지 않는다.
x and y
T T > True
T F
F T
F #F
✔ and 연산자를 사용해 참 거짓을 확인한다면, 좌항이 거짓인 경우 우항은 확인하지 않는다.
✔ 좌항이 거짓이라면 우항은 확인하지 않는다. 즉, 두 항이 모두 거짓(False)인 경우는 없다.
x or y
T #T > True
T F
F T
F F
✔ or 연산자를 사용해 참 거짓을 확인한다면, 좌항이 참인 경우 우항은 확인하지 않는다.
✔ 좌항이 참이라면 우항은 확인하지 않는다. 즉, 두 항이 모두 참(True)인 경우는 없다.
x && y && z
F ? ?
T F ?
T T F
T T T
x or y or z
T ? ?
F T ?
F F T
F F F
✔ 논리 회로라면 경우의 수가 8가지지만, 프로그램은 4가지.
✔ 그렇기 때문에 연산자의 우선순위가 무시되는 경우도 발생한다.
[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과
'BackEnd > Python' 카테고리의 다른 글
[파이썬 기초] 02-1. [리스트] (0) | 2021.03.16 |
---|---|
[파이썬 기초] 01-5. 조건문 / 반복문 (0) | 2021.03.16 |
[파이썬 기초] 01-3. 문자열 / 문자열 메소드 / 입출력함수 (0) | 2021.03.16 |
[파이썬 기초] 01-2. 데이터형 / 변수의 의미 / 연산자 (0) | 2021.03.16 |
[파이썬 기초] 01-1. 파이썬의 특징과 기본 문법 (0) | 2021.03.15 |
댓글