ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

모듈러 연산

정의

특정 지점에 도달하면 다시 처음으로 돌아와야하는 경우가 있습니다.

물건을 나누거나 세금을 계산할 때 몫과 나머지라는 개념을 인지하고 있었습니다.

이 후 날짜, 시간 등 주기적인 체계를 가진 수의 개념이 생기면서 패턴화 즉, 모듈러 사고방식을 자연스럽게 사용하게 됩니다.

 

18세기 이후 가우스는 하나의 연산체계로 정의하였습니다.  

“a와 b가 n으로 나누어 떨어질 때 같은 나머지를 가지면, 우리는 a ≡ b (mod n)이라 쓰겠다.”
(a + b) % n  
(a × b) % n

 

모듈러 연산(Modular Arithmetic) 쉽게 이해하기

모듈러(modulo, %) 연산은 어떤 수를 나눈 뒤 ‘나머지’만 취하는 연산이야.
예를 들어:

 
17 % 5 = 2

17을 5로 나누면 몫은 3, 나머지는 2 → 그래서 결과는 2.


1️⃣ 모듈러 연산의 기본 개념

step-by-step 분석:

✔️ (1) a % n = a를 n으로 나눈 나머지

  • a = 피제수(나눠지는 수)
  • n = 모듈러스(modulus, 기준이 되는 수)

예:

 
10 % 3 = 1 20 % 7 = 6

✔️ (2) 나머지의 범위

일반적으로

 
0 ≤ (a % n) < n

즉, 결과는 0 이상 n 미만.

단, 일부 언어(C, JavaScript 등)에서 음수 처리가 조금 다를 수 있지만
Java에서는 다음처럼 처리됨:

 
-5 % 3 = -2

확실한 사실입니다.


2️⃣ 모듈러의 의미를 그림으로 이해

a를 n으로 계속 빼 나가다가 0 이상 n 미만이 되면 멈춘 값이 나머지.

예:

 
17 - 5 = 12 12 - 5 = 7 7 - 5 = 2 → (0 ≤ 2 < 5)

3️⃣ 모듈러 연산이 왜 중요할까?

✔️ 반복되는 패턴 처리

예: 시계(12시간제)

 
14시 → 14 % 12 = 2시

✔️ 배열 인덱스 순환

슬라이드 UI, 라운드 로빈 스케줄링 등

 
index = (index + 1) % 배열길이

✔️ 암호학

RSA, ECC 등에서 모듈러 연산이 핵심.

✔️ 해시 함수

해시 버킷 번호 결정:

 
bucket = hash(key) % N

4️⃣ 모듈러의 중요한 성질(step-by-step)

✔️ 동일성(동치)

a ≡ b (mod n) 뜻:

a와 b를 n으로 나눴을 때 나머지가 같다

예:

 
172 (mod 5)

✔️ 덧셈 법칙

확실한 사실:

 
(a + b) % n = ((a % n) + (b % n)) % n

예:

 
17 + 8 = 25 25 % 5 = 0 또는 (17%5=2) + (8%5=3) = 5 5 % 5 = 0 → 동일

✔️ 곱셈 법칙

 
(a × b) % n = ((a % n) × (b % n)) % n

✔️ 거듭제곱 법칙

 
(a^k) % n = 반복적으로 모듈러를 적용해 계산

경험적으로 매우 큰 수 계산 시 필수.


5️⃣ Java에서의 모듈러 연산

Java에서는 % 연산자를 사용.

 
System.out.println(17 % 5); // 2 System.out.println(-5 % 3); // -2

✔️ 음수 주의사항

Java의 % 결과는 피연산자 a의 부호를 따른다.

 
-5 % 3 → -2 5 % -3 → 2

확실한 정보입니다.


6️⃣ 모듈러 연산을 왜 배워야 하나?

네가 지금 IP 변환, 비트 연산, 패턴 정규화 이런 걸 구현하고 있잖아?
이 로직에서 모듈러는 다음에 쓰일 수 있어:

  • IP 주소 범위 탐색 시 바운드 조정
  • 해시 기반 구조 작성 시 버킷 계산
  • 슬라이드 인덱스 순환
  • 비트마스크 기반 연산 보조 기능

 

 

특징

정수론의 핵심 개념이며, 큰 숫자를 다룰 때 반드시 필요합니다.

우리가 수를 셀 때 특정 지점에 도달하면 다시 처음으로 돌아오는 규칙을 말합니다.

즉, 특정 수로 나누었을 때의 나머지만을 다루는 연산 체계입니다.

어떤 정수 A를 양의 정수 M으로 나눈 나머지를 구하는 연산

나눗수  (Modulus): 나누는 기준이 되는 수이며, 일반적으로 M으로 표기합니다.

나머지 (Remainder): 연산의 결과입니다.

728x90