- 목차
- 산술, 대입 연산자
- 관계, 논리, 비트 연산자
- 연산자 우선 순위
연산자
3 + 2 = 5
3
,2
: 피연산자+
: 연산자- 연산자는 피연산자를 원하는 방향으로 움직이게 만든다. 프로그램 로직 구성의 필수요소
1. 산술, 대입 연산자
산술 연산자

- 산술 연산자의 기본동작
>>> a, b = 3, 2 >>> print("{0} + {1} = {2}".format(a, b, a + b)) 5 >>> print("{0} - {1} = {2}".format(a, b, a - b)) 1 >>> print("{0} * {1} = {2}".format(a, b, a * b)) 6 >>> print("{0} / {1} = {2}".format(a, b, a / b)) 1.5 >>> print("{0} // {1} = {2}".format(a, b, a // b)) 1 >>> print("{0} % {1} = {2}".format(a, b, a % b)) 1 >>> print("{0} ** {1} = {2}".format(a, b, a ** b)) 9
- 산술 연산자 우선순위
+
,-
연산은 우선순위가 동일하므로 어느것을 먼저 연산해도 결과는 동일함 +
,-
연산은 다른 산술연산자들에 비해 우선순위가 낮음
>>> a, b, c = 2, 3, 5 # 괄호() : 우선순위가 가장 높음 >>> print((a + b) - c) 0 >>> print(a + (b - c)) # 우선순위가 동일한 연산은 괄호로 묶어 먼저 연산해도 결과는 동일함. 0 >>> print(a + (b * c)) 17 >>> print((a + b) * c) # ()에 의해 곱셈과 더하기 연산의 우선순위가 바뀜 25 >>> print(a * (b / c)) 1.2
- 문자형과 숫자형 연산
>>> a, b, c = "2", "3", 4 >>> print(a + b) # 두 개의 문자열을 연결한 새로운 문자열을 만드는 문자열 접합(+) 연산의 결과임 23 >>> print(int(a) + int(b)) 5 >>> print(b + c) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print(b + c) TypeError: can only concatenate str (not "int") to str # 문자열 접합(+) 연산은 문자열끼리 할 수 있는 연산이므로 TypeError가 발생함 >>> print(int(b) + c) 7 >>> print(b + str(c)) 34
대입 연산자
- 변수 선언
- 연산 결과를 변수에 저장
- 함수 반환값을 변수에 저장

복합 대입 연산자
>>> a = 10 >>> a += 5; print(a) 15 >>> a -= 5; print(a) 10 >>> a *= 5; print(a) 50 >>> a /= 5; print(a) 10.0 >>> a //= 5; print(a) 2.0 >>> a %= 5; print(a) 2.0 >>> a **= 5; print(a) 32.0
2. 관계, 논리, 비트 연산자
관계 연산자

>>> a, b = 3, 2 >>> print(a == b) False >>> print(a != b) True >>> print(a > b) True >>> print(a < b) False >>> print(a >= b) True >>> print(a <= b) False
>>> a = 10 >>> 8 < a < 10 False >>> 8 < a <= 10 True
논리 연산자
선택의 문제에서 특정 조건을 만족하는지를 검사하기 위한 조건식을 만들 때 사용

- 부울형 변수 a, b에 대한 논리 연산 결과

- and의 특징
>>> a = 10 >>> a > 7 and a < 12 True >>> (a > 7) and (a < 12) True >>> 7 < a < 12 True
- or의 특징
>>> gender, age = "male", 20 >>> gender == "female" and age >= 18 False >>> gender == "female" or age >= 18 True >>> gender == "female" or age < 18 False
- not의 특징
관계연산자가 논리연산자보다 우선하고, 논리연산자 not의 우선순위가 and와 or의 우선순위보다 앞서기 때문()
를 사용하는 경우 연산자의 우선순위를 강제로 명시함
>>> a = 3 >>> not(a > 7 and a < 12) True
비트 연산자


- 비트 논리곱
&
: 양변의 비트 값 모두 1일 경우에만 1을 반환
>>> a, b = 2, 3 # 4비트로 표현시 a = 0010, b = 0011 >>> print(a & b) # 0010 & 0011 -> 0010 -> 10진정수로 2의 값을 가진다 2
- 비트 논리합
|
: 양변의 값 모두 0일 경우에만 0을 반환
>>> print(a | b) # 0010 | 0011 -> 0011 -> 10진정수로 3의 값을 가진다 3
- 비트 배타적 논리합
^
: 양변의 값이 다를 경우 1, 같을 경우 0을 반환
>>> print(a ^ b) # 0010 ^ 0011 -> 0001 -> 10진정수로 1의 값 1
- 비트 부정연산
~
: 비트 값이 1일 경우 0, 0일 경우 1을 반환
>>> print(~ a) # ~ 0010 -> 1101 -3
- 비트 시프트 연산자
>>
,<<
: 비트를 이동
>>> a = 8 # 0000 1000 >>> print(a >> 1) # 0000 1000 >> 1 => 0000 0100 4 >>> print(a >> 2) # 0000 1000 >> 2 -> 0000 0010 2 >>> print(a >> 3) # 0000 1000 >> 3 -> 0000 0001 1
>>
연산을 수행하면 오른쪽으로 이동할 때마다 정수 값을 반으로 줄이는 결과를 만듦
>>> print(a << 1) # 0000 1000 << 1 -> 0001 0000 16 >>> print(a << 2) # 0000 1000 << 2 -> 0010 0000 32 >>> print(a << 3) # 0000 1000 << 3 -> 0100 0000 64
<<
연산을 수행하면 왼쪽으로 이동할 때마다 정수 값이 두 배가 되는 결과를 만듦
3. 연산자 우선순위
코드를 작성하면서 여러가지 연산자를 사용하기 때문에 미리 정의된 연산자의 순위를 아는것이 중요하다

- 괄호가 최우선
- 산술 연산이 비트 연산보다 우선
- 관계 연산이 논리 연산보다 우선