[SW Expert Academy] Advanced-1 구현 시작하기

기본적이지만, 면접에 난올법한, 그리고 갑자기 물어보면 당황할 수도 있는 내용임

플로우 1. 알고리즘 복잡도 2. 엔디안 3. 구조체 4. XOR 두번 5. 진수 6. 실수



1. 알고리즘 복잡도
-> "입력 크기"가 커질수록 "수행 시간"이 증가한다.

빅오, O(상한, 최대 복잡도) 오메가, Ω(하한, 최소 복잡도), 세타, θ(상한 = 하한)

상수 n0에 대해, n>n0 -> f(n) < C*g(n) 이면 복잡도는 O(g(n))이다.
상수 n0에 대해, n>n0 -> f(n) > C*g(n) 이면 복잡도는 θ(g(n))이다.
상수 n0에 대해, n>n0 -> f(n) < C1*g(n) & f(n) > C2*g(n)이면 복잡도는 Ω(g(n))이다.

(여기서 f(n)은 실제 수행 복잡도 의미)

2. 엔디안 (HW 아키텍쳐에 의존됨)

Bit endian: 큰게 앞 / Network / 12|34 (0x1234)
Little endian: 작은게 앞 / 대다수 desktop / 34|12 (0x1234)

3. 구조체 -> byte alignment가 되고, 컴파일러에 의해 padding된다.

padding: 가장 큰 변수로 배수 값 결정한다.
-> 구조체 내부 변수 순서에 따라 공간 효율성이 달라짐

4. XOR 두번 -> 원본

5. 진수 -> 1의 보수, 2의 보수

6. 실수 
-부동 소수점(floating point)
32bit: 부호(1)|지수(8)|가수(23)
64bit: 부호(1)|지수(11)|가수(52)

->지수 excess 표기법
[-127,128]
-127 : 00000000
0 : 01111111(127)
128: 11111111

1001.0011(2) = 1.0010011 * 2^3
32bit -> 0|10000010|00100110000000000000000

->실수는 "근사값" 이므로 오차가 발생한다. 
32bit는 십진수 기준 6자리 , 64bit는 15자리까지 표현 가능


Reference



댓글

댓글 쓰기

가장 많이 본 글