AI 보이는 추론 실험실 · 나머지와 순환 위치

자바스크립트에서 −1 % 7은 왜 6이 아니라 −1일까?

몫을 0 쪽으로 버리는 나머지 계산과 일곱 칸을 순환하는 위치 계산을 나누어 실행합니다.

탐구게시 2026-10-17읽기·실험 약 10분확인 문제 2개규칙 기반 실행한국논리학협회 자체 제작제작·검수 LTCT 편집부

원형 활동판에서 색깔 말을 옮기는 여성과 활동을 바라보는 작은 공식 올리
생성 이미지로 표현한 순환 활동 장면입니다. 사진의 칸 수는 계산 조건이 아니며 실제 활동의 칸 수는 선택값으로 정합니다. · 주제 이해를 돕기 위한 AI 생성 이미지 · LTCT 자체 제작
오늘의 질문

0부터 6까지 번호가 있는 일곱 칸에서 0의 한 칸 전을 구할 때, 자바스크립트의 -1 % 7을 그대로 써도 될까요?

−1을 7로 나눌 때 0 쪽으로 버린 몫은 0, 나머지는 −1이고 0부터 6까지 순환 위치로 바꾸면 6인 비교
−1을 7로 나눌 때 0 쪽으로 버린 몫은 0, 나머지는 −1이고 0부터 6까지 순환 위치로 바꾸면 6인 비교 · 한국논리학협회 자체 제작
그림 크게 보기 ↗
01

한 칸 전의 번호와 % 결과를 따로 묻습니다

일곱 장의 사진을 0부터 6까지 번호로 관리한다고 합시다. 0번 사진에서 이전 버튼을 누르면 6번을 보여 주고 싶습니다. AI가 (현재 번호 − 1) % 7이라고 코드를 제안했다면 음수 경계에서 직접 시험해야 합니다.

자바스크립트에서 -1 % 7은 -1입니다. 이 값은 원하는 사진 번호 6과 다릅니다. 순환 번호를 구하려는 목적과 언어가 정의한 나머지 연산을 구별해야 어떤 보정이 필요한지 설명할 수 있습니다.

02

몫을 어느 쪽으로 버리는지가 결과를 정합니다

자바스크립트의 작은 정수 예에서는 n/d의 몫에서 소수 부분을 0 쪽으로 버린 뒤, n에서 d×몫을 뺀 값이 나머지입니다. -8/7은 약 -1.143이므로 0 쪽으로 버린 몫은 -1이고, -8−7×(-1)=-1입니다.

음의 무한대 쪽으로 내림해 몫을 -2로 고르면 남는 값은 6입니다. 두 결과 모두 -8=7×몫+나머지라는 관계를 만족하지만 몫을 고르는 규칙이 다릅니다. 활동에서 몫과 재구성한 n을 함께 보는 이유입니다.

03

순환 위치는 0부터 d−1까지로 맞춥니다

양의 d에 대해 ((n % d)+d)%d를 쓰면 이 활동 범위의 정수 n을 0부터 d−1까지의 순환 위치로 바꿀 수 있습니다. -1에서는 먼저 나머지 -1을 얻고, 7을 더한 6에 다시 %7을 적용해 6이 됩니다.

8에서는 첫 나머지가 1입니다. 7을 더한 8에 다시 %7을 적용하면 1로 돌아옵니다. 마지막 %가 이미 양수인 나머지를 같은 범위 안에 유지합니다. 활동에서 n을 -8·-1·0·1·8로 바꾸며 원래 나머지와 순환 위치를 비교하세요.

04

정확히 나누어떨어지는 음수에는 −0도 있습니다

-7 % 7의 결과는 자바스크립트 Number에서 -0입니다. 일반 출력에서는 0처럼 보일 수 있으므로 활동은 Object.is로 구별해 -0으로 표시합니다. 순환 위치 계산 결과는 0입니다.

이 표시는 음수를 나누었을 때의 나머지가 언제나 0보다 작지는 않다는 점을 보여 줍니다. -7과 -1을 따로 시험하면 나누어떨어지는 경우와 남는 경우가 다르다는 것을 확인할 수 있습니다. 이 실험에서는 d를 1~12로 제한해 0으로 나누는 경우를 포함하지 않습니다.

05

언어와 입력 범위를 함께 기록합니다

계산 모형은 n이 -100~100인 정수이고 d가 1~12인 정수인 범위를 다룹니다. 화면에서는 그중 경계를 비교하기 좋은 값들을 골라 제공합니다. 소수·매우 큰 정수·무한대·BigInt를 모두 검증한 도구가 아닙니다. 다른 언어의 %가 같은 결과를 내는지도 해당 언어 규칙으로 확인해야 합니다.

AI가 만든 순환 코드를 검토할 때는 가운데 값뿐 아니라 첫 칸의 이전, 마지막 칸의 다음, 한 바퀴의 배수도 시험하세요. 원하는 출력 범위와 실제 연산 결과를 나란히 기록하면 오류가 표현의 차이인지 인덱스 계산의 차이인지 분명해집니다.

직접 확인하기 · 규칙 기반 실행

음수 입력의 몫·나머지·순환 위치 비교하기

작은 정수 n과 양의 정수 d만 사용합니다. %는 자바스크립트 Number의 나머지 연산이며, 순환 위치는 ((n % d) + d) % d로 따로 계산합니다. 언어마다 같은 기호의 규칙이 같다고 가정하지 않습니다.

나머지와 순환 위치 비교하기

0 쪽으로 버린 몫: -0

자바스크립트 n % d: -1

순환 위치: 6 (0부터 6까지)

d × 몫 + 나머지 = -1

  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6 · 현재

입력 조건에 따른 학습용 결과입니다. 초기화하면 처음 조건으로 돌아갑니다.

관계를 읽고, 다른 상황에 적용하기

두 문제로 생각 확인

1자바스크립트 Number에서 -8 % 7의 결과는?
2일곱 칸의 순환 위치로 -1을 바꾼 ((-1 % 7)+7)%7의 결과는?

두 문제의 답을 모두 선택하면 해설을 볼 수 있습니다.

나의 설명으로 마무리

오늘 발견한 관계

0 / 4,000자

메모는 현재 기기의 브라우저에만 보관됩니다. 계정이나 다른 기기에는 동기화되지 않습니다.

출처와 제작 안내

원문을 참고해 설명·도표·문항·실험을 새로 작성했습니다. 별도 표시가 없는 사례와 수치는 학습을 위한 가상 예시입니다. 원문 번역이나 실제 모델의 성능 평가 자료가 아닙니다.

  1. Number의 나머지 계산 ↗Ecma International · TC39ECMAScript Language Specification · 6.1.6.1.6 Number::remainder

    0 쪽 몫 절단, 나머지 계산, 음수 배수의 -0을 확인. 양의 d 순환식은 작은 정수 전체 범위로 검산.