티스토리 뷰

👉  비트 연산자

비트 연산자    
&   논리 곱 (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가지.

✔  그렇기 때문에 연산자의 우선순위가 무시되는 경우도 발생한다.

 

 

 

 

 

 

[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과

댓글
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
최근에 올라온 글
글 보관함
Total
Today
Yesterday