반응형

앞서 변수나 자료형을 설명할 때 이미 숫자형 자료형으로 예시를 들었기 때문에 익숙하리라 믿고 있습니다.

그럼에도 불구하고 처음 만난다는 생각으로 숫자형 자료형에 대해 공부를 해봅시다.

숫자형 자료형

숫자(Number)형태로 이루어진 자료형으로 종류로 정수, 실수, 8진수, 16진수, 복소수가 있습니다.

이러한 자료형들은 앞서 말씀드린대로 영어의 단어와 같기 때문에 뜻을 알고, 익히는(암기) 수밖에 없다고 생각합니다.

어떻게 사용하는지 알아봅시다.

정수

a = 123
b = -123
c = 0

정수에는 양의 정수, 음의 정수, 그리고 0이 있죠? 갑자기 수학 공부가 된 것 같습니다만, 아시다시피 컴퓨터라는 것이 수의 계산을 위한 것이고 프로그래밍이란 것은 컴퓨터를 동작시키기 위한 알고리즘 표현이기 때문에 수학에 대한 공부도 같이 하면 좋죠... 하지만 선형 대수학이나 뭐 해석학 이정도의 수준까지 필요한 것은 아닙니다. 물론 이런 수학적 지식이 필요한 프로그래밍 분야는 딥러닝과 같은 분야가 있긴 합니다만 각설하겠습니다.

실수

a = 123.0
b = -123.0
c = 0.0

실수도 정수와 마찬가지입니다. 정수와의 차이점은 소숫점(floating point)이 존재한다는 점입니다. 추가적으로 지수 표현 방식도 있습니다.

d = 2.2e10
e = 2.2E-10

e와 E 모두 같은 의미이며 각각 d = 2.2 * 10 10 , e = 2.2 * -10 10 입니다.

8진수

b = 0o111
print(b)
print(type(b))

output

73
<type 'int'>

8진수는 0o(영어 소문자 o)로 표현 가능합니다. 결괏값은 정수형으로 나오는 것을 확인할 수 있습니다.

16진수

b = 0x111
print(b)
print(type(b))

output

273
<type 'int'>

8진수와 차이는 없습니다. 다만 앞에 입력해야하는 것이 0x인 것이 차이점입니다.

복소수

복소수는 실수와 허수로 이루어진 수입니다. 허수를 어떻게 프로그래밍으로 표현이 가능했을까요?

a = 1 + 2.2j
print(a)
print(type(a))

output

(1+2.2j)
<type 'complex'>

허수의 부분에 j를 붙이는 것으로 허수를 표현할 수 있게 되는데요, j 가 붙여지게 되면 그 변수의 자료형은 complex가 됩니다. complex 자료형(class)은 real과 imag 변수가 들어있고 위 예제의 1은 real, 2.2는 imag에 입력되게 됩니다.

한 번 볼까요?

print(b.real)
print(b.imag)

output

1.0
2.2

이 모든 부분을 제대로 설명하려면 클래스와 함수(메소드) 기반의 설명이 필요한데, 이 부분은 추후 배워보도록 합시다.

이번 포스트에서는 숫자형 자료형에 대해 배워보았는데요. 사실 실제 업무를 할 때 자주 사용되는 숫자 자료형은 int와 float 정도라고 생각하시면 되겠습니다. 그래도 나머지도 알아두면 좋겠죠?

반응형
반응형

프로그래밍 언어는 기본적으로 언어의 특성을 띄고 있고, 영어로 이루어져 있기 때문에 영어 공부법과 크게 다르지 않습니다.

영어를 공부할 때 어떻게 공부하시나요?

각자 사람마다 다르겠지만, 저 같은 경우에는 단어를 암기하고 문법을 이해하는 과정으로 공부를 합니다.

영어 단어를 프로그래밍 언어의 무엇으로 비유해볼 수 있을까요? 저는 자료형이라고 생각합니다.

자료형을 설명하기 이전에 먼저 변수(Variable)에 대해 설명을 해야합니다.

변수

변수는 수학에서도 사용되고 프로그래밍에서도 사용됩니다.

잠시 수학과 프로그래밍의 관계를 이야기 해볼까요?

컴퓨터의 존재 목적이 수를 계산하는 것이고, 이에 대한 논리적인 구조를 프로그래밍 언어로 표현하는 것이기 때문에 프로그래밍이라는 것은 수학이 밑바탕이 되는 것입니다.

그렇다면 수학에서의 변수와 프로그래밍에서의 변수가 같은 의미일까요?

아닙니다.

수학에서의 변수는 수식에 따라서 변하는 값을 뜻합니다.

프로그래밍에서의 변수는 데이터를 저장하기 위한 메모리 저장 공간을 뜻합니다.

간단한 예를 하나 들어보겠습니다.

수학에서의 x = 0은 단순히 x는 0이다 라고 표현할 수 있습니다.

프로그래밍에서의 x = 0은 어떨까요?

나중에 배우겠지만 0이라는 숫자는 int(정수)형 데이터입니다. int 자료형의 기본 크기는 4바이트입니다(변수의 크기에 따라 무제한까지 가능합니다, arbitrary precision)

크기라는 것은 변수의 표현 가능 범위만큼의 공간을 뜻하는 것으로 이는 메모리(RAM) 공간에 할당 됩니다.

메모리 공간에 할당될 때는 주솟값이라는 유니크한 id 값을 갖게됩니다.

즉, 프로그래밍에서의 x = 0이 뜻하는 바는 다음과 같습니다.

0x10(주솟값) 부터 4바이트 공간에 0이라는 데이터를 가진 x이다. 라고 표현할 수 있습니다.

변수를 설명했으니 이제 자료형을 설명해야겠죠?

자료형

자료형(Data Type)이란 변수의 종류, 특성을 의미합니다.

간단한 예를 들어봅시다.

a = 0
b = 0.0
c = "abc"

위와 같은 3가지의 변수는 파이썬 특성(동적 프로그래밍)상 변수를 초기화(생성)할 때 자료형을 명시하지는 않습니다.

이러한 특성은 앞서 설명드렸던 줄 단위 실행에서 장점으로 작용하게됩니다. 변수에 이것도 넣어보고, 저것도 넣어봐도 에러가 안나는 것이죠.

그러나, a, b, c 각각의 변수는 자료형을 암묵적으로 지니고 있습니다. 무엇일까요?

나중에 배우겠지만, a(int. 정수), b(float, 실수), c(string, 문자열)입니다.

주입식 교육은 초중고때 많이 했으니 이제 파이썬에서 명시하지도 안하는 자료형을 알아야하는지 알아야겠죠?

결론부터 말씀드리자면 각각의 자료형에는 특성들이 있고, 그 특성을 이용하여 프로그래밍을 하기위함입니다.

모든 설명에는 이해를 위해 예시가 필요합니다

ex 1)

a = 1
b = 2
c = a + b

ex 2)

a = 1.0
b = 2.0
c = a + b

위 두 예시는 수학적으로 볼 때 동일한 결괏값을 나타냅니다. 다만 프로그래밍 관점으로 볼 때 ex 1)의 결괏값인 3과 ex 2)의 결괏값인 3.0은 극명한 차이를 보이고 있습니다.

먼저 위 두 예제의 변수 a, b 그리고 c의 자료형이 각각 int와 float이라는 점에서 메모리 저장 공간의 차이가 발생하게 됩니다. a = 1을 하게 됨으로 a 변수를 할당하기 위해 메모리에 4바이트를 할당하지만, a = 1.0을 하게 되면 a 변수를 할당하기위해 메모리에 8바이트를 할당하게 됩니다.

이렇듯 ex 1)과 ex 2)는 겉보기에는 비슷한 결과를 보이지만 프로그래밍적으로는 ex 2)가 굉장한 메모리 손실을 보이고 있다고 볼 수 있습니다.

이번 포스트에서는 변수와 자료형에 대해 배워보았습니다.

다음 시간에는 자료형에 어떤 종류들이 있는지 알아봅시다.

반응형

+ Recent posts