본문 바로가기

컴린이 일기장/Today I Learned

[TIL] 부동소수점 / 빅오(시간복잡도) / Python 자료형

반응형

[주절주절]

코테나 면접이 있는 기회들에 대비해 CS 기초/자료구조&알고리즘 야금야금 공부 시작!
여름동안 하루에 개념 1~2개씩 정리해보려고한다. (전공기초 때 다 배운 것들인데... 크흠)

여긴 간단하게 키워드 위주로 슥슥, 따로 깊게 공부한 내용이나 단독으로 정리해두고 싶은 내용은 다른 카테고리에 정리해볼 예정이다. 작심삼일 노노! 화이팅 😋

 

[Today I Learned]

# 부동소수점

- 컴퓨터는 숫자를 2진법으로 저장한다. 실수(소수점이 붙어 있는 수)의 경우, 부동소수점(Floating point) 표현 방식을 통해 보다 효율적으로 숫자를 표현한다. 

+ 직관적인 고정소수점 표현 방식도 있긴하지만, 사용하는 비트 수 대비 표현 가능한 수의 범위가 적고, 정밀도가 낮기 때문에 잘 사용되지 않고, 부동소수점 표현을 주로 사용한다.

- 표현 방식 : 부호 비트 / 지수부 / 가수부

 

- 계산 방법

① 실수의 정수부와 소수부를 각각 2진법을 이용해 표현해준다. (소수부의 경우 정수부와 달리 2를 곱해가며 계산한다.)

② 정수부에 1만 남을 때까지 소수점을 이동시켜준다. (= 정규화)
ex. 0.0101 → 1.01 * 2^-2

③ 소수점 왼쪽은 무조건 1이 되기 때문에 지수(ex.-2)와 가수(ex.01)만을 표현해주면된다. 가수는 왼쪽부터 채우고, 남은 자리는 0으로 채운다. 지수의 경우 bias(IEEE 표준 32bit 기준 127)을 더한 값을 2진수로 바꾸어 채워준다.

ㄴ 위의 예시와 같이 지수 값이 음수가 될 수 있기 때문에 bias를 사용한다.

 

- 위와 같은 체계를 32비트 단정도(Single-Precision)이라고 부르고, 64비트 체계를 64비트 배정도 (Double-Precision)이라고 부른다. 프로그래밍 언어에서 전자는 float, 후자는 double 타입이 해당한다.

 

# 빅오

: 점근적 실행시간(= n이 무한대로 향할 때 실행시간의 추이) 을 표기할 때 가장 널리 쓰이는 수학적 표기법 중 하나
ㄴ 빅오는 상한을 의미하는 것이지, 최악의 경우, 평균적인 경우와는 관계가 없는 개념이다.

- O(1) / O(log n) / O(n) / O(n log n) / ...

- 대부분의 경우 시간 복잡도와 공간 복잡도는 Trade-off 관계 → 알고리즘의 주요한 특징 중 하나

 

# Python 자료형 

 

 

[질문 노트]

 

 

반응형