네이티브 / 체험형 사례 분석 / 읽는 시간: 18분

Windows 계산기: 200 + 10%가 220인 이유는?

REA로 Windows 계산기의 퍼센트 키를 분석하세요. 덧셈과 곱셈을 비교하고 분기를 살펴본 뒤 두 피연산자 데모로 검증합니다.

이 페이지의 내용

01. 분석하기 전에 직접 해 보기

숫자를 200과 10으로 두고 ‘% 적용’을 누르면 두 번째 숫자가 20이 됩니다. ‘이어서 =’를 누르면 220이 나옵니다. 곱셈으로 바꿔 반복하면 두 번째 숫자는 0.1, 최종 결과는 20입니다.

퍼센트 실험체험 / 관찰 / 설명
표준 모드 / 퍼센트01 / 입력

200 + 10%

10

%를 눌러 두 번째 숫자가 어떻게 바뀌는지 확인하세요.

같은 두 숫자로 덧셈을 한 뒤 곱셈을 해 보세요.

두 피연산자를 사용하는 퍼센트 실험입니다. Windows 계산기 전체를 에뮬레이션하지는 않습니다.

만들 결과물

두 피연산자의 퍼센트 실험과 중간 상태·최종 결과를 모두 검증하는 테스트 표.

분석하기 전에

실습에는 사전 설정이 필요 없습니다. 바이너리 분석에는 조사 가능한 Windows 계산기 설치본과 설정된 네이티브 분석 프로바이더가 필요합니다. Microsoft 공개 소스도 추가 교차 검증에 활용할 수 있습니다. REA 설정하기 →

02. 버튼 입력 순서 기록하기

질문을 구체화하세요. 200 입력, 덧셈 선택, 10 입력, 퍼센트, 등호 순서로 누르면 무엇이 일어날까요? 등호 뒤뿐 아니라 퍼센트 뒤의 화면도 기록합니다. 중간 피연산자는 최종 결과만으로는 알 수 없는 정보를 보여 줍니다.

이는 표준 모드 동작입니다. 모드, 릴리스, 키 순서를 테스트 기록에 남기세요. 등호 반복, 피연산자 생략, 퍼센트 재입력에는 추가 상태가 필요하므로 첫 실험에서는 제외합니다.

이 분석 프롬프트 복사
REA로 Windows 계산기 표준 모드의 백분율 동작을 분석하세요. 200 + 10 % =와 200 × 10 % = 순서를 비교합니다. 설치된 어떤 모듈이 산술 연산을 담당하는지 찾고 퍼센트 분기와 연산자에 따른 피연산자 변환을 추적하세요. 확인한 명령어, 소스 해석, 실제 GUI 입력 결과를 구분하세요.

03. 계산 코드는 실행기에 없을 수 있습니다

그럴듯한 이름의 실행 파일을 여는 것만으로는 부족합니다. 다른 앱을 실행한다면 설치 패키지까지 연결을 추적하세요. 실제 분석한 파일과 해시를 기록합니다.

원본 조사에서는 작은 calc.exe 실행기가 아닌 CalcViewModel.dll에 연산 코드가 있었습니다. 함수 선택에는 분석가의 도움이 사용되었습니다. Microsoft 공개 소스는 연산자 ID 해석에 도움이 됐지만 설치 바이너리와 정확히 일치하는 소스 커밋인지는 입증되지 않았습니다.

  • 산술 분기는 어느 파일에 있나요?
  • 무엇이 퍼센트 처리를 선택하고 이전 연산자는 어디에 기록되나요?
  • 이전 값과 현재 입력은 어디에 저장되나요?
  • 각 분기에서 어떤 산술 헬퍼를 호출하나요?

04. 피연산자 변환부터 재구현하기

덧셈·뺄셈에서는 입력한 백분율이 첫 번째 숫자를 기준으로 합니다. 곱셈·나눗셈에서는 100으로 나눈 값이 됩니다. 대기 중인 연산자는 그다음 적용합니다. 구현과 인터페이스에서 두 단계를 분리하세요.

이 실습에서는 상태 변화를 볼 수 있도록 %와 =를 따로 누릅니다. 입력값이나 연산자를 바꾸면 새 계산이 시작됩니다. 임의의 수식이 아닌 유한한 숫자 두 개만 받습니다.

이 분석 프롬프트 복사
표준 모드의 두 피연산자 퍼센트 동작만 구현하세요. +와 −는 입력을 entry × (first / 100)으로, ×와 ÷는 entry / 100으로 변환합니다. 변환된 피연산자를 테스트에서 확인할 수 있게 하고 대기 중인 연산자는 등호에서만 적용하세요. 0으로 나누기, 빈 입력, 초기화를 처리하세요. 키 반복이나 공학용 모드 호환성을 주장하지 마세요.

05. 결과뿐 아니라 중간값도 테스트하기

두 오류가 서로 상쇄되어 기대한 최종 결과가 나올 수도 있습니다. 변환된 피연산자를 먼저 확인하고 결과를 검증하세요. 뺄셈, 나눗셈, 0, 음수인 첫 번째 숫자를 포함해 익숙한 덧셈 예제의 답만 고정해도 통과하는 테스트가 되지 않도록 합니다.

직접 Windows에서 실행한 결과가 다르면 수식을 수정하기 전에 모드와 정확한 입력 순서를 확인하세요. 키 순서와 표시 상태를 저장합니다. 원본 보고서는 Windows 실제 GUI 입력 검증을 완료했다고 주장하지 않으므로 이를 검증 완료로 간주하면 안 됩니다.

06. 알려진 결과와 비교하기

다음을 명확한 검증 지점으로 활용하세요. 일치하더라도 이 작은 규칙만 뒷받침하며 앱 전체의 호환성을 입증하지는 않습니다.

키 입력 순서% 입력 후= 입력 후
200 + 10 % =20220
200 − 10 % =20180
200 × 10 % =0.120
200 ÷ 10 % =0.12,000
50 + 20 % =1060
6 × 6 % =0.060.36
200 ÷ 0 % =0정의되지 않음

두 파일을 같은 폴더에 저장하고 Node.js로 검증을 실행하세요. 패키지 설치는 필요 없습니다.

터미널
node check-case-labs.mjs

07. 실제로 검증한 범위는?

이 사이트는 Microsoft 공개 예제를 포함해 자체 두 피연산자 구현에 수치 테스트를 실행합니다. Microsoft 테스트 모음을 실행하거나 설치된 Windows 앱을 자동 조작하지 않습니다. 퍼센트·등호 반복, 전체 수식 파싱, 공학용 모드는 데모 범위 밖입니다.

이 사이트의 수치 테스트 결과 보기 →

출처: REA 계산기 검증 보고서 · Microsoft 고정 커밋의 퍼센트 분기. 튜토리얼, 도해, 브라우저 실험은 독립적으로 제작했습니다.

다음 실험공룡 게임은 왜 점점 빨라질까요? →

REA가 처음인가요? REA란? · 가이드 검증 방법