오늘의 질문
#05 · 거짓이 된 −1 < 1
질문
도현: "a < b가 0이 나왔어요. a는 −1이고 b는 1인데요. 컴파일러 버그죠? 그리고 기계어에는 if도 for도 없다면서요. 그럼 이 비교는 누가 한 거예요?"
오늘 알아낼 것
cmp가 플래그를 남기고 조건 점프가 그 플래그를 읽는 방식을 익힌다. 같은 비트를 부호 있게 비교하는 jl과 부호 없이 비교하는 jb의 차이로 도현의 버그를 설명하고, sum_to의 반복문 한 바퀴가 -O0에서 명령어 6개, -O1에서 4개라는 것을 흉내 CPU로 센다.
새솔대 공학관 5층 실습실 · 화요일 밤 디버거 교실
10월 6일 화요일 밤 7시, 도현이 노트북을 들고 실습실에 들어옵니다. 화면에는 C 프로그램 하나와 출력 0이 떠 있습니다. int a = -1; unsigned int b = 1; 그리고 printf("%d\n", a < b);.
"−1이 1보다 작은 건 초등학생도 알잖아요." 은재가 옆에서 거듭니다. "근데 지난주에 기계어에는 if가 없다고 하셨잖아요. 비교는 어디서 해요?"
윤 조교가 칠판에 cmp와 jl, jb를 나란히 씁니다. "추측하지 말고, 한 줄씩 실행해 보자. 오늘은 CPU가 '참·거짓'을 어떻게 만드는지부터 볼 거야."
1~3교시는 누구나 볼 수 있고, 4교시부터는 무료 회원이면 끝까지 볼 수 있어요.
로그인하면 어디까지 봤는지 저장되고, '내 강의'에서 이어 볼 수 있어요. 가입비는 없어요.
카카오에서 닉네임만 받아 와요. 개인정보 처리방침
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.