컴퓨터 구조
- CPU ↘
- register
- ALU: Arithmetic & Logic Unit 연산
- CU: Control Unit
- 캐시 메모리 ↘
- 메모리 ⤴
- 휘발성
- RAM / ROM
- 보조기억장치 ⤴
- 비휘발성
- 하드 디스크 드라이브
- SSD(플래시 메모리 기반) ~~ USB
CPU 👬 메모리 // 보조기억 장치
- main board & system bus + bus
CPU
- 프로세스
- 멀티코어 프로세서
- 스레드
- 하드웨어 스레드
- 멀티스레드 프로세서
- 병렬
- 논리 프로세서
- 소프트웨어 스레드
- concurrency → 논리적 실행 단위
- 하드웨어 스레드
메모리
- 주소(번지)
- 순서
- 빅엔디안
- 리틀엔디안
- bi-endian
import sys
print(sys.byteorder)
나는 little 엔디안
숫자 표현
부동소수점
2진수로 밖에 표현이 안 됨. 일반적인 10진 수로 떨어질 수 없는 소숫점이 나올 수 있음 → 오차 발생
- 부호 1bit
- 지수 8bit
- 가수(소수 부분) 23bit
❔그럼 Decimal 은?
하드웨어 기반 이진 부동 소수점과는 달리, decimal 모듈은 사용자가 변경할 수 있는 정밀도(기본값은 28자리)를 가지며, 주어진 문제에 따라 필요한 만큼 커질 수 있습니다
이라면
- 부호
- exponent n 정수 (소수몇째자리까지인지)
- 유효숫자 m
으악 즉,
메모리 사용량을 증가시킬 수 있지만, 정확한 계산을 가능하게 합니다.
자료구조
스택
- push / pop
- LIFO: Last In First Out
- 🚐 뒤로가기 (e.g. 브라우저, 길찾기 방문 경로)
큐
- enqueue / deque
- FIFO: First In First Out
- 변형 큐
- 원형
- 덱(deque): double-ended queue
- priority queue
tree
- 구성요소
- node
- edge(link)
- 노드를 가르키는 용어
- parent node
- child node
- sibling node
- ancestor node
- descendant node
- root node
- leaf node
- 트리에 대한 용어
- degree
- level(depth)
- root node가 level 0
- height = highest level
- tree traversal
- 종류
-
- 전위 순회(preorder traversal)
-
- 중위 순회(inorder traversal)
-
- 후위 순회(postorder traversal)
-
- level0order traversal
-
- 구현: 재귀…
- 종류
- 종류
- binary tree
- skewed binary tree
- full binray tree
- perfect binary tree
- complete binary tree
- 마지막 level node 들이 왼쪽부터 채워짐
- binary tree
탐색 트리
-
binary search tree
- O(log n)
- worst: skewed binary tree인 경우 O(n)
-
heap
- O(log n)
- 최대힙 / 최소힙
- 부모 <> 자식 우선순위 순서(크기)에 따라
- 🚐 우선순위 큐
-
TBD
대기중
- 운영체제
- 네트워크
- 데이터베이스