# 단항 (Unary)

단항(unary)은 '하나'를 뜻하는 라틴어 unus에서 온 말로, 수학과 컴퓨터 과학에서 입력(인수)을 하나만 받는 연산이나 함수를 가리킵니다. 부호를 바꾸는 −x, 비트를 뒤집는 NOT, 절댓값 |x|, 곱셈 역원 x⁻¹ 등이 단항 연산입니다. 두 입력을 받는 연산은 이항(binary), 세 입력은 삼항(ternary)이라고 하며, 이렇게 입력 개수를 나타내는 성질을 항수(arity)라고 합니다.

## 자세히 알아보기

같은 기호가 단항과 이항으로 모두 쓰이는 경우가 많아 주의가 필요합니다. '−'는 −5(단항 부호 반전)와 8 − 5(이항 뺄셈) 모두에 쓰입니다. 그래서 일부 문헌은 혼동을 피하려 단항 대신 '모나딕(monadic)', 이항 대신 '다이아딕(dyadic)'이라는 말을 쓰기도 합니다.

'단항'은 다른 뜻으로도 쓰입니다. '단항 기수법(unary numeral system)'은 수 n을 같은 기호 n개로 나타내는 1진법으로, 5를 11111로 쓰는 방식입니다. 계산 복잡도 이론에서는 입력을 2진법이 아니라 단항으로 주느냐에 따라 문제의 난이도 분류가 달라지기도 합니다. 또 대수의 '단항식(monomial)'은 이름이 비슷하지만 다른 개념입니다.

## 블록체인·암호화폐에서는

- EVM 연산 코드: 이더리움 가상 머신의 NOT, ISZERO는 스택에서 값을 하나 꺼내 결과 하나를 넣는 단항 연산입니다. 반면 ADD, XOR 등은 이항 연산입니다.
- 타원곡선 연산: 점 P를 −P로 보내는 부호 반전과 P를 2P로 보내는 점 두 배(doubling)는 단항 연산입니다. 점 두 배 연산은 별도의 공식으로 구현되며, 스칼라 곱을 계산하는 '두 배 후 더하기' 알고리즘에서 키 비트마다 한 번씩, 가장 자주 수행되는 연산입니다.
- 해시 함수: 암호 해시 함수 H(m)은 메시지 하나를 받아 다이제스트 하나를 내는 단항 함수로 볼 수 있습니다. 내부에서는 NOT 같은 단항 비트 연산과 AND·XOR 같은 이항 연산이 함께 쓰입니다.
- 유한체 역원: 곱셈 역원 x ↦ x⁻¹은 단항 연산이며, AES S-box의 핵심이자 타원곡선 좌표 계산에서 가장 비싼 연산 중 하나입니다.

## 쉽게 말하면

단항 연산은 '재료 하나만 넣으면 결과가 나오는 기계'입니다. 덧셈처럼 두 개를 넣어야 하는 기계와 구별됩니다.

## 예시

NOT 1011 = 0100, −(7) = −7, GF(7)에서 3⁻¹ = 5는 모두 단항 연산입니다.

EVM에서 ISZERO 0은 1을, ISZERO 5는 0을 돌려주며, 스마트 컨트랙트의 조건 검사에서 자주 쓰이는 단항 연산입니다.

---
출처: https://achivx.kr/glossary/unary-%EB%8B%A8%ED%95%AD/ · ACHIVX 용어 사전 · 수정일 2026-10-20
