정수형(Integer)

아마도 초등학교 산수 시간에 가장 먼저 배운 숫자형일겁니다.

days = 365
print(type(days))

HugeNumber = 2 ** 1024
print(HugeNumber)
print(type(HugeNumber))

1행의 days 는 1년의 일수를 기억하는 변수입니다. 이 변수를 2행의 type()이라는 함수를 통해서 해당 변수의 자료형(Data Type)을 알 수 있게 해줍니다. Python은 C, Java와 같이 변수 선언할 때 데자료형 선언이 없기 때문에 알아두면 쓸모가 있습니다.

그런데, Python의 독특한 점이랄까, 특이한 점이 있습니다. 사실 전통적인 개발 언어(C, Java)에서는 표현할 수 있는 정수에 한계가 있었습니다. 보통 2의 32승 만큼의 한계내에서 표현이 가능했습니다. 그 이상의 될 경우에는 오버 플로우(Overflow)가 발생해서 오류를 생성했습니다. 4행을 보면 2의 1024승을 표시하고자 함을 알 수 있습니다. 해당 내용을 수행하면 엄청나게 큰 수가 표시됩니다.

참고!!! type()함수는 python의 내장 함수로 실제로는 해당 변수의 class type을 출력해 주는 것입니다. class에 관해서는 나중에 다루게 될 것입니다.

2진수, 8진수, 그리고 16진수

Python의 경우도 다른 개발 언어와 같이 2진수, 8진수, 16진수 표현이 가능합니다. 그러나, 하드웨어 제어 부분이 아니라면, Python에서 10진수 이외의 숫자 처리를 하는 경우는 매우 드물 것입니다. 다음은 2진수, 8진수, 16진수의 간단한 표현 방법에 대해서 알오보겠습니다.

num_deci = 8
num_bin = 0b1000
num_oct = 0o10
num_hex = 0x08

print(num_deci)
print(num_bin)
print('{#:b}'.format(num_bin))
print(num_oct)
print('{#:o}'.format(num_oct))
print(num_hex)
print('{#:x}'.format(num_hex))

위의 내용을 보면 각각의 변수에 10진수, 2진수, 8진수, 16진수 형태로 8을 입력하고 이후에 출력하는 내용입니다. 10진수를 제외하고는 각각의 진수 형태를 대입할 때 각0b, 0o, 0x 형식으로 Prefix를 붙입니다. 대입하는 진수형은 다르지만, 결과적으로 대입된 값은 동일합니다. 이 내용은 7행, 9행, 11행이 6행과 다르지 않음을 보고 확인할 수 있습니다.

다만, 변수에 저장된 값을 각각의 진수 형태로 출력하기 위해서는 별도의 문자형 표시 방법을 사용해야 합니다. 8행, 10행, 12행은 각각 진수 형태에 대한 출력 방법을 보여줍니다.

Last updated