Page 26 -
P. 26

>>> (-4).to_bytes(1, byteorder='little', signed = True)
                               b'\xfc'





                             이 코드는 -4라는 ‘정수’를 컴퓨터 메모리에 저장되는 ‘바이트’ 형태로 표현하는 코드입니다.

                             첫 번째 인자는 몇 바이트로 나타낼지 지정합니다. 우리는 지금까지 예제를 1바이트로 진
                             행했으므로 1로 지정합니다. 두 번째 인자는 바이트 오더(byteorder)입니다. 마지막 인자인
                             signed는 양수와 음수를 모두 표현할지 아니면 양수만 표현할지 정하는 인수입니다.



                               바이트 오더는 빅 엔디언인지 아니면 리틀 엔디언인지 정하는 인자입니다. 빅 엔디언과 리틀 엔디언에 대한 설명은 9장
                               에서 자세히 알아보겠습니다. 이 예제에서는 1바이트만 사용하므로 빅 엔디언이든 리틀 엔디언이든 상관 없다는 것만
                               알면 됩니다.





                             출력 값은 16진수로 표현됩니다. 16진수 0xFC를 2진수로 변환하면 1111 1100입니다. 그림
                             2-6에서 구한 -4의 2의 보수와 같습니다. 이로써 컴퓨터는 음수를 2의 보수를 이용해 저장

                             한다는 걸 알 수 있습니다.



                           7.4   2의 보수로 표현하는 이유


                             그러면 컴퓨터는 왜 음수를 2의 보수로 저장할까요?

                             첫째, 양수와 음수를 모두 양수처럼 저장한다고 가정해 보겠습니다. 0000 0000과 1000
                             0000은 +0과 -0이 됩니다. 즉, 0을 표현하는 두 가지 방법이 존재하게 됩니다. 이렇게 되면

                             컴퓨터 입장에서는 수 하나를 더 표현할 수 있는데 비트 하나를 낭비하는 셈입니다. 또한 두
                             수를 비교할 때 CPU에서 뺄셈을 하는데 +0과 -0을 비교하면 결과 값이 예상과 다르게 나

                             옵니다.
                             둘째, 컴퓨터에서 정수의 뺄셈 과정을 살펴보겠습니다. 덧셈은 단순히 두 수를 더하면 되지

                             만, 뺄셈은 2의 보수 개념을 활용합니다. 9–4를 계산할 때 9에서 4를 빼는 게 아니라 9와
                             -4를 더합니다. 그림 2-7을 볼까요?





                                                                                                 2장 정수  31
   21   22   23   24   25   26   27