더북(TheBook)

Q. 음수는 어떻게 저장되는가?

A. 작은 음수의 경우 2의 보수(two's complement)라고 하는 방법으로 처리되지만, 여기에서는 자세히 설명하지 않을 것이다. ‘작은’이라고 할 때의 크기는 컴퓨터 시스템의 설계에 따라 다르다. 구형 32비트 컴퓨터의 경우, ‘작은’ 숫자는 –2147483648(–231)에서 2147483647(231 – 1)까지의 범위를 표현할 수 있다. 최신 64비트 컴퓨터의 경우 ‘작은’ 숫자는 –263에서 263 – 1까지의 숫자를 표현할 수 있으므로, 그리 작은 숫자는 아니다! ‘작은’ 숫자로 표현할 수 있는 것보다 큰 숫자는 파이썬이 자동으로 형을 변환해 더욱 정교한 표기법을 사용하는데, 컴퓨터 시스템의 메모리가 허용하는 한 아주 큰 숫자를 저장할 수 있다. 숫자가 어떤 방법으로 저장되었는지는 프로그램에서 알 수 없으며, 프로그래머는 내부 표기법에 따른 데이터 형 변환에 신경 쓰지 않고 자유롭게 숫자를 사용할 수 있다.

 

Q. 1/0 표현식은 파이썬에서 어떻게 평가되는가?

A. 이 표현식은 실행 시 ZeroDivisionError 예외를 발생시킨다. 이런 것은 질문할 필요 없이 파이썬을 대화형 모드로 실행해 간단히 확인할 수 있다. 직접 해보라!

 

Q. 바닥 나눗셈 연산자 //와 나머지 연산자 %를 음수에 적용하면 어떻게 되는가?

A. 직접 실행해보라! -47 // 5-10, -47 % 53으로 평가된다. 일반화해보자면 바닥 나눗셈 연산자 //는 정수 몫(즉, 음수 무한대 쪽으로 반올림한 몫)으로 평가된다. 나머지 연산자 %는 약간 더 복잡하게 작동한다. 파이썬에서는 ab가 정수일 때, 표현식 a % bb와 동일한 부호를 갖도록 평가된다. 따라서 모든 정수 ab에 대해 b * (a // b) + a % b = a가 성립된다. 자바 등의 언어에서는 표현식 a % ba와 같은 부호를 갖도록 평가된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.