Computer Science/컴퓨터구조

[컴퓨터구조] 논리 연산자와 비트 연산자

yooj_lee 2021. 2. 19. 20:17
300x250

비트 연산자

|, &와 같은 연산자. bitwise하게 작용함으로써 비트 간의 연산을 진행함. (그냥 비트 간 연산이라 주로 이진수에 이용이 되는 듯함)

ex. 1001&0110 = 0000 (False)

논리 연산자

or, and와 같은 연산자. or의 경우에는 하나라도 True이면 True를 리턴하고, and는 하나라도 False면 False를 리턴함. 

ex. 1001 and 0110 = 6 (무조건 뒤에 있는 것을 리턴하게 된다)

비트 연산자 vs 논리 연산자 in Python

비트 연산와 논리 연산이 다르게 나오는 경우

같은 and이지만 비트 and는 비트 별로 진행되기 때문에 0000이므로 False로 나오고 논리 and는 뒤의 것을 리턴(파이썬에서 논리 연산자의 경우 마지막에 평가를 한 operand 값이 리턴된다.)

흔히 if 문을 쓸 때 조건 작성 시 &를 사용하는 경우가 꽤 되는데 다음과 같은 경우에 원하는 결과가 리턴되지 않을 수 있으니 논리 연산자와 비트 연산자를 구분하여 사용하는 것이 필요해보인다.

비트연산자를 조건에 작성할 시 생기는 오류

 

300x250