본문 바로가기
Python/Python 기초 배우기

[Python] 자료형 - 숫자형의 종류, 정수 - 진수 변환

by 따라쟁이개발자 2023. 1. 11.

Python도 다른 언어들과 마찬가지로 자료형이 존재합니다.

자료형에는 숫자형, 문자열 자료형, 리스트 자료형 등이 있는데요!

 

이번 게시물에서는 숫자형과 그 종류에 대해 알아보겠습니다.

 

참고로, 예제를 진행하면서 값이 어느 자료형인지 확인해 볼텐데요

이 때는 자료형의 타입을 확인하는 함수 'type'을 사용하겠습니다.

 


숫자형

숫자형(Number)는 숫자 형태로 이루어진 자료형입니다.

떠올릴 수 있는 일반적인 숫자 형태는 정수, 실수가 있겠지요?

그 외에도 2진수, 8진수, 16진수가 있습니다.

 

 

정수형

정수형(Integer)는 정수를 뜻하는 자료형입니다. 

일반적으로 저희가 알고 있는 양수, 음수, 0 등이 있습니다.

 

아래는 변수에 양수, 음수, 0 값을 넣고 출력한 결과입니다.

type을 이용해 각 값의 자료형을 출력해보면 정수를 뜻하는 int가 뜨는 것을 볼 수 있습니다.

>>> a = 123
>>> b = -123
>>> c = 0
>>> a, b, c
(123, -123, 0)
>>> type(a), type(b), type(c)
(<class 'int'>, <class 'int'>, <class 'int'>)

 

 

실수형

실수형(Floating-point)는 소수점이 포함된 숫자를 뜻하는 자료형입니다. 

일반적으로 알고 있는 소수점 방식 외에도 '컴퓨터식 지수 표현 방식'(ex. 4.24e10)을 사용할 수도 있습니다.

 

아래는 변수에 실수값을 넣고 출력한 결과입니다.

type을 이용해 각 값의 자료형을 출력해보면 실수를 뜻하는 float가 뜨는 것을 볼 수 있습니다.

>>> a = 123.45
>>> b = -123.45
>>> c = 123.45e10
>>> d = 123.45e-10
>>> a, b, c, d
(123.45, -123.45, 1234500000000.0, 1.2345e-08)
>>> type(a), type(b), type(c), type(d)
(<class 'float'>, <class 'float'>, <class 'float'>, <class 'float'>)

 

 

2진수 / 8진수 / 16진수

일반적으로 사용하는 정수와 실수 외에도

숫자형으로 2진수, 8진수, 16진수를 나타낼 수 있습니다.

 

2진수(Binary)는 '0b' 로 시작하며 0부터 1까지 입력 가능합니다.

8진수(Octal)는 '0o' 로 시작하며 0부터 7까지 입력 가능합니다.

16진수(Hexadecimal)는 '0x' 로 시작하며 0부터 F까지 입력 가능합니다.

 

# 2진수
>>> a = 0b1001
>>> a
9
>>> b = 0b1002    # Error발생 / SyntaxError: invalid digit '2' in binary literal

# 8진수
>>> a = 0o17
>>> a
15
>>> b = 0o18   # Error발생 / SyntaxError: invalid digit '8' in octal literal

# 16진수
>>> a = 0x1F
>>> a
31
>>> b = 0x1G   # Error발생 / SyntaxError: invalid syntax

 

정수 → 2진수/8진수/16진수로 변환

정수형을 진수 형태로 변환할 때에는 format 함수를 사용할 수 있습니다.

아래와 같은 형태로 사용되며, 진수 타입은 b(2진수), o(8진수), x(16진수) 가 있습니다.

format( 정수 값, '진수 타입(문자형)') 

 

참고로 format 결과는 문자열(String) 타입입니다.

>>> format(17, 'b')
'10001'
>>> format(17, 'o')
'21'
>>> format(17, 'x')
'11'
>>> type(format(17, 'b'))
<class 'str'>

 

 

2진수/8진수/16진수 정수로 변환

진수 형태를 정수형으로 변환할 때에는 int 함수를 사용할 수 있습니다.

아래와 같은 형태로 사용되며, 진수 타입은 숫자형으로 표시되며 2(2진수), 8(8진수), 16(16진수) 가 있습니다.

int( 진수 값, '진수 타입(숫자형)') 

 

int 결과는 정수형(Integer) 타입입니다.

>>> int('0b11', 2)
3
>>> int('0o11', 8)
9
>>> int('0x11', 16)
17
>>> type(int('0b11',2))
<class 'int'>

 


 

[ 참고 ]

Doit! 점프 투 파이썬

댓글