파이썬 연산자

Ju_Nik_e·2023년 9월 20일

PYTHON

목록 보기
9/9

파이썬 연산자

대부분의 언어들이 기본적인 산술 연산자 외에 여러가지 연산자를 사용할 수 있다.
이 연산자들의 종류에 대해서 알아보자

산술 연산자

기본적인 사칙연산과 제곱, 나머지 등 수학적 계산을 할 때 사용하는 연산자이다.

할당 연산자

값을 변수에 할당하는 연산자로, 기본적인 = 외에 값을 계산 후 할당하는 연산자가 있다.

논리 연산자

참인지 거짓인지를 판단해 조건문에 주로 사용한다.

비교 연산자

말 그대로 양 옆의 값을 비교하는 연산자이다.

항등 연산자

같은 메모리에 있는지를 확인한다. is와 is not 두가지 밖에 없다.

  • a, b는 값이 같아서 a==b의 결과는 True지만
  • 같은 메모리에 있는 것은 아니기 때문에(객체 자체는 같지 않기 때문에) False를 반환한다.

비트 연산자

비트단위로 연산을 하는 연산자로, 메모리를 절약할 수 있는 연산자이다.

a = 0b1001
b = 0b1111

a & b # 1001 -> 9
a | b # 1111 -> 15
a ^ b # 0110 -> 6
~a	  # 0110 -> -10
~b	  # 0000 -> -16
a << 2# 100100 -> 36
a >> 2# 0010 -> 2

위 식에서 ~a와 ~b가 왜 -10과 -16이 나오는 이유는 아래와 같다.

컴퓨터가 음수를 저장하는 방법

컴퓨터는 1byte에 맨 앞 bit를 부호비트, 그리고 나머지 7bit에 수를 저장한다.
부호비트가 0이면 양수, 1이면 음수이다.

그럼 -n을 저장하려면 n를 이진수로 변환하고 부호비트를 1로 바꾸면 끝인 것 같지만, 그게 아니고 보수를 이용해야한다.

-9를 저장하는 과정은 다음과 같다.

9를 2진수로 변환 -> 00001001
변환한 값에 1의 보수를 구함(not연산) -> 11110110
구한 값에 1을 더함 -> 11110111
이 값이 -9이다.
이를 검증하기 위해 9와 -9를 더해보면
  00001001
+11110111
=10000000
이 나오는데 8bit를 초과하는 1을 버리고 00000000,
즉 9-9=0이 나오는 걸 알 수 있다.

비트 연산에서 not연산 시 -1이 되는 이유

처음부터 음수값을 저장한게 아니고, 양수값을 비트연산자 ~를 이용했기 때문에 읽어올 때, bit단위로 not연산을 수행 후 마지막 bit에 +1을 한 값을 표시하기 때문에 -9가 아니라 -10이 표시된다.

0개의 댓글