파이썬 연산자 **, ^, //, %란 무엇인가?
파이썬에는 겉보기에 비슷해 보이지만 전혀 다른 기능을 하는 연산자들이 있습니다. 이 글에서는 **(거듭제곱), ^(비트 XOR), //(몫 나눗셈), %(나머지) 네 가지 연산자의 의미와 동작 방식을 예제 코드와 함께 자세히 살펴봅니다.
1. ** — 거듭제곱(Exponentiation) 연산자
파이썬에서 **는 거듭제곱 연산자입니다. 표현식 x**y는 x를 y번 곱한 값, 즉 x의 y제곱을 반환합니다.
>>> x = 5 >>> y = 3 >>> x**y 125
2. ^ — 비트 단위 XOR 연산자
^는 비트 단위 XOR(배타적 논리합) 연산자입니다. 두 비트를 피연산자로 받아 하나는 1이고 다른 하나는 0일 때만 1을 반환하며, 둘 다 같은 값이면 0을 반환합니다.
>>> a = 10 >>> bin(a) # 0000 1010 '0b1010' >>> b = 20 >>> bin(b) # 0001 0100 '0b10100' >>> c = a ^ b >>> c 30 >>> bin(c) # 0001 1110 '0b11110'
3. // — 몫 나눗셈(Floor Division) 연산자
//는 바닥 나눗셈(floor division) 연산자로 정의되며, 나눗셈 결과에서 소수점 이하를 버린 정수 부분(몫)을 반환합니다.
>>> 10 / 3 3.3333333333333335 >>> 10 // 3 3
음수를 나눌 경우에는 결과가 음의 무한대 방향으로 내림(round toward negative infinity)된다는 점에 유의해야 합니다. 즉, 단순히 소수점을 버리는 것이 아니라 더 작은 정수로 내려갑니다.
>>> -10 / 3 -3.3333333333333335 >>> -10 // 3 -4
4. % — 나머지(Modulo) 연산자
% 기호는 모듈로(modulo) 연산자로 정의되며, 나눗셈 연산의 나머지를 반환합니다. 짝수·홀수 판별이나 순환 구조 처리 등에 널리 활용됩니다.
>>> 10 % 3 1 >>> 10 % 2 0
피제수(나누어지는 수)가 음수일 경우에는 파이썬이 수학적으로 '바닥 나눗셈'의 결과를 따르므로, 나머지 값이 양수로 계산될 수 있다는 점이 특징입니다. 예를 들어 -10을 3으로 나누면 몫은 -4가 되고, 나머지는 3 × (-4) = -12에서 피제수 -10을 빼면 2가 됩니다.
>>> -10 % 3 2 >>> -5 % 2 1 >>> 73 % 9 1 >>> -73 % 9 8
정리
- x ** y: x의 y제곱 (거듭제곱)
- a ^ b: 비트 단위 XOR
- a // b: 나눗셈의 몫 (음수는 음의 무한대 방향으로 내림)
- a % b: 나눗셈의 나머지 (결과의 부호는 제수와 일치)
이 네 가지 연산자는 각각 용도가 명확히 다르므로, 특히 ^(XOR)를 거듭제곱으로 착각하지 않도록 주의하는 것이 중요합니다. 실제 코드에서 다양한 예제를 직접 실행해 보면서 동작을 익혀두면 실수를 줄일 수 있습니다.