[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))이다.
플로우 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
좋은 정보 감사합니다~ ^^
답글삭제