- 컴퓨터가 이해할 수 있는 것은 0 또는 1이다. high voltage 일 때는 1, low voltage 일 때는 0을 나타내는 것이 일반적이다. 010101… 의 반복되는 숫자에 어떤 의미, 즉 어떤 context 를 부여하느냐에 따라 다른 값을 가진다. 예를 들어 0000 이라는 네 숫자의 연속을 정수로 해석할 수도 있고 소수로 해석할 수도 있고 문자로 해석할 수 있음. ?: 컴퓨터 마다 context 가 다른 것인가 아니면 앞 뒤에 오는 숫자나 말 그대로 context 에 따라서 다른 의미를 지니는 건지..?
- C 언어는 리눅스와 깊은 관련이 있다. 운영체제나 이런 것들은 대부분 C 로 프로그래밍된 경우가 많다.
- .c 파일이 실행파일 (윈도우에서는 .exe) 로 바뀌는 과정은 다음과 같다. 먼저 전처리기에서 함수나 api 등이 predefined 되어 있는지를 확인한다. 이때 정의되어 있지 않은 경우 에러를 낸다. 다음으로 컴파일러에서 컴파일을 해서 어셈블리어로 변경하고 어셈블리어에서 기계어로 번역한 뒤 링커를 통해 다른 필요한 파일을 불러와서 최종적으로 실행 파일을 만들어 낸다. vs 에서는 build 기능을 사용하면 위와 같은 과정을 처리한다.

- 아스키 코드에서는 0에서 255까지 즉 1바이트로 문자를 표현한다. 따라서 한글을 표현하고 싶은 경우 8바이트 초과의 바이트가 필요하다.
- 질문!

73이 된 부분. .c 에서 exe 파일로 가면서 그럼 용량이 더 커지는 것인지..? 각 단계마다..
- 컴퓨터 구조는 크게 CPU, Main Memory, 하드 디스크, 디스플레이, 외부 입력 장치로 구성되어 있음. 참고로 버스는 인터페이스라고 보면 되는데 만약 8비트가 필요하면 선 8개가 연결되어 있음.

- von Neumann Architecture : 원하는 데이터가 메인 메모리 또는 하드 디스크에 저장되어 있고 이를 CPU 가 찾아서 계산하는 아키텍처.
- I/O 는 인풋 아웃풋을 뜻한다.
- 메인 메모리는 자주 쓰는 데이터가 올라가는 temporary한 store 라고 보면 됨. ex) DRAM ?: 그럼 자주 쓰지 않는 것도 잠깐 메인 메모리를 통해 cpu 로 전달되고 자주 쓰는 것은 아예 그곳에 store 되어 있는 것인지?
- ARM, Intel 등은 ISA 를 만드는 회사이고 애플이나 삼성이 이 ISA 를 이용해 m1 칩 등의 cpu 를 만드는 것. m1칩 등을 마이크로아키텍처 microrarchitecture 라고 함.
- CPU 의 연산은 오직 4개뿐이다. Load = copy 해서 불러 오는 것, Store = 카피해서 메인 메모리에 위치시키는 것, Operate = 계산, Jump ← if문 생각하면 됨.
- 프로그램 실행 과정

먼저 외부 입력 장치에 의해 입력이 되면 CPU 로 들어옴. 그 다음 CPU는 메인 메모리에 해당 data 가 있는지 search 함.
