╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

Python/Python 기초

[Python] 연산자 2 (논리, 비트, 멤버쉽, 식별)

재안안 2022. 3. 1. 01:33

저번에는 산술, 비교, 대입 연산자에 대한 예제들을 봤고

이번에는 다른 종류의 연산자들을 알아보겠다.

다른 종류의 연산자들은 아래와 같다.

 

논리연산자 logical operator

비트연산자 bitwise operator

멤버쉽연산자 membership operator

식별연산자 Identity operator

 

 

우선 논리연산자에 대해 알아보겠다.

논리연산자는 피연산자의 참 거짓을 통해 연산후 결과를 반환한다.

결국 논리연산자의 결과도 True or False이다.

논리연산자의 종류로는 아래와 같이 있다.

 

and : 양쪽 피연산자의 값이 모두 참일 때 True 반환. 기호는 &

or   : 양쪽 피연산사의 값 중 하나라도 참인경우 True 반환. 기호는 |

not : 피연산자의 진릿값을 반대 값으로 만듦. 기호는 ~

 

아래의 예제를 통해 확인하겠다.

 

and or not 사용 예제
실행 결과

실행 결과를 보면 논리연산자는 피연산자의 진릿값(불 자료형)을 통해 연산을 한다는 것을 알 수 있다.

0이 아닌 정수는 True의 진릿값을 갖기 때문에 논리연산자에도 피연산자로 사용할 수 있다.

 

 

다음은 비트연산자에 대해 알아보겠다.

컴퓨터는 2진수를 쓴다. 바로 이 2진수를 연산하고 싶을 때 비트 연산자를 사용한다.

그래서 2진수가 뭔지 알아야하니 우선 간단하게 2진수의 표기법 부터 알아보겠다.

 

2진수로 표기
2진수 표기 설명

위에서 20번 줄의 실행결과가 0b1101인데 여기서 0b는 2진수 숫자에요 를 뜻한다.

여기서 주목할건 1101이 어떻게 나왔는지이다.

 

2^3이 있다(True),  2^2가 있다(True),  2^1이 없다(False),  2^0이 있다(True)

그래서 (2^3) *1 + (2^2)*1 + (2^1)*0 + (2^0)*1 = 13의 값을 갖는것이다.

 

여기까지 10진법 -> 2진법의 표기방법을 알아보았다.

이제 본론으로 돌아가 비트연산의 방법을 알아보겠다.

 

비트 연산은 세로방향으로 놓았을 때 같은 자리수에 있는 수들의 진릿값으로 연산한다.

비트연산자의 기호는 아래와 같다.

 

&   :    같은 자리의수가 둘 다 1일때 결과는 1

 |   :     같은 자리의 수가 둘중 하나라도 1이면 결과는 1

^   :    같은 자리의 수가 다를 때 결과는 1

~   :    0은 1로, 1은0으로 뒤집음

<< :    각 비트의 왼쪽으로 자리이동.

>> :    각 비트의 자리이동.

 

아래의 예제를 통해 확인하겠다.

 

&, , ^ 사용 설명
비트연산자 & ^ ~ 사용 예제

 

그리고 다음은 비트 쉬프트연산이다.

 

비트연산자 >> << 사용 예제

비트연산자를 이렇게도 사용할 수 있다.

 

산술연산자보다 미세하게 빠르다.

 

다음은 멤버쉽연산자이다.

객체 안에서 피연산자의 존재유무를 확인할 때 사용한다.

바로 보는게 이해가 빠르다.

 

in       : 피연산자가 안에 있는지 확인

not in  : 피연산자가 안에 없는지 확인

 

아래 예제를 통해 설명하겠다.

 

in not in 사용 예제

 

 

마지막으로 식별연산자에 대해 알아보겠다.

식별연산자란 피연산자들의 과 주소값을 비교해주는 연산자다.

값과 주소값이 같으면 같은 객체이다. (당연하다.)

 

is      : 피연산자들이 같은 객체면 True 반환

is not : 피연산자들이 같은 객체가 아니면 True 반환

 

아래의 예제를 통해 보여주겠다.

사용
i j 선언
is 사용 예제