언어 자료구조 알고리즘/파이썬(Python)

[python] 4. 정수를 10진수, 8진수, 16진수로 표현할 수 있어요.

언제나휴일 2016. 5. 13. 23:42
반응형

[python] 4. 정수를 10진수, 8진수, 16진수로 표현할 수 있어요.



안녕하세요. 언휴예요.


이번에는 파이썬에서 정수 데이터를 표현하는 방법을 알아보기로 해요.


파이썬에서는 정수를 10진수 외에도 8진수나 16진수로 표현할 수 있어요.


13 처럼 숫자로만 표현하면 10진수 표현이예요. 우리가 일상에서 쓰는 것이죠.


그런데 컴퓨터는 메모리에 값을 저장하고 저장 단위의 최소가 비트죠. 그래서 2진수나 8진수, 16진수로 표현할 때도 많답니다. 특히 8진수 한 자리는 2진수 세 자리의 값을 표현할 수 있고 16진수는 2진수 네 자리의 값을 표현할 수 있어서 메모리의 값을 표현하기 편하답니다.


예를 들어 8비트 메모리에 01011101라는 데이터가 있을 때 이진수 세 자리를 8진수로 나타낼 수 있어요. 01 011 101 처럼 첫 번째 자리부터 세 자리씩 묶은 후에 01은 8진수 1, 011은 8진수 3, 101은 8진수 5이므로 이진수 01011101는 8진수로 135랍니다.


검산을 해 볼까요?


이진수는 자리값은 1(2의 0승), 2(2의 1승), 4(2의 2승, 8(2의 3승),... 입니다. 


따라서 이진수 01011101는 2의 6승+2의 4승 + 2의 3승 + 2의 2승 + 2의 0승 = 64 + 16 + 8 + 4 + 1 = 93


8진수의 자리값은 1(8의 0승), 8(8의 1승), 64(8의 2승), ...입니다.


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


그리고 16진수 한 자리는 이진수 네 자리를 표현할 수 있어요. 그런데 개발자가 표현한 수가 10진수를 표현한 것인지 8진수 혹은 16진수를 표현하는 것인지를 구분할 수 있어야 겠죠.


파이썬에서는 8진수 앞에는 0o (숫자 0과 알파벳 o)를 붙여서 표현하고 16진수 앞에는 0x (숫자 0과 알파벳 x)를 붙여서 표현해요.


따라서 0o13은 8진수 13을 표현하는 것으로 10진수로 8+3 = 11을 표현하는 것이랍니다. 0x13은 16진수 13을 표현하는 것으로 16+3 =19를 표현하는 것이예요.


파이썬으로 10진수, 8진수, 16진수 수를 표현하기


반응형