태그: 16진수

안녕하세요. 언휴예요.

 

이번에는 Python에서 정수 데이터를 표현하는 방법을 알아볼게요.

 

값을 저장하는 컴퓨터의 메모리의 최소 단위가 비트죠. 하나의 비트에는 두 가지 상태만을 표현할 수 있다는 것을 잘 아실거예요. 그리고 이러한 이유로 메모리에 있는 데이터를 표현할 때 10진수로 표현하는 것보다 2진수로 표현하는 것이 메모리에 저장하고 있는 상태를 나타내기 편합니다.

 

하지만 2진수로 표현하면 많은 자리로 나타내야 하는데 보다 간결하게 표현할 때 8진수나 16진수로 표현합니다. 8진수로 표현하면 이진수의 하위 첫 번째 자리부터 세 자리씩 묶어서 하나의 8진수로 표현할 수 있어요. 16진수로 표현하면 이진수 네 자리를 표현할 수 있죠.

 

예를 들어 8비트 메모리에 01011101의 값이 있을 때 8진수로 표현하면 135입니다. 이진수 101은 8진수로 5이고 이진수 011은 8진수로 3, 이진수 01은 8진수로 1입니다. 이처럼 하위 첫 번째 자리부터 세 자리씩 묶어서 8진수로 표현할 수 있어요.

 

검산을 해 볼까요?

 

이진수 01011101은 2의 6승 + 2의 4승 + 2의 3승 + 2의 2승 + 2의 0승 = 64 + 16 + 8 + 4 + 1 = 93

8진수 135는 8의 2승 + 3X8의 1승 + 5 = 64 + 24 + 5 = 93

 

만약 8비트 메모리에 01011101의 값이 있을 때 16진수로 표현하면 5d입니다. 이진수 0101은 16진수로 5이고 이진수 1101은 16진수로 d입니다.

 

Python에서는 정수를 표현할 때 앞에 0o(숫자 0과 알파벳 o)를 붙여서 8진수를 나타낼 수 있고 0x(숫자 0과 알파벳 x)를 붙여서 16진수를 나타낼 수 있어요.

 

다음은 10진수 73과 8진수 73, 16진수 73을 10진수로 출력한 예입니다. 8진수 73은 10진수로 (7X8)+3=59이며 16진수 73은 (7X16)+3=115입니다.

[그림 1] 정수를 10진수, 8진수, 16진수로 표현
[그림 1] 정수를 10진수, 8진수, 16진수로 표현