목차
이 책은 개념적으로 세 부분으로 나뉜다. 첫 번째 부분은 컴퓨터 하드웨어를 탐구한다. 하드웨어가 무엇이고 하드웨어를 어떻게 만드는지 살펴본다. 두 번째 부분은 하드웨어에서 소프트웨어가 어떻게 작동하는지 살펴본다. 마지막 부분은 프로그래밍 기술, 즉 다른 살마들과 협력해 더 나은 프로그램을 만드는 방법에 관한 것이다.
하부 기술 지식. 더 나은 프로그래머가 되기 위해서는 컴퓨터를 잘 이해하고, 프로그램의 동작을 이해해야만 한다.
고수준 도구만 알고 있을 때의 가장 큰 문제점은... 잘못된 질문을 던지기 쉽다는 점. 백번 공감.
컴퓨터 설계와 프로그래밍
1. 사용자 : 컴퓨터 시스템을 사용하는 대부분의 사람들.
2. 애플리케이션 프로그래머 : 웹, 앱, 플레이어 등의 프로그램을 작성하는 사람들. 다른 사람이 만든 기본 요소를 import해, 이 기본 요소들을 서로 붙이는 작업을 수행
3. 시스템 프로그래밍 : 애플리케이션 프로그래머가 사용하는 기본 요소를 만듬. 작성하는 코드가 하드웨어와 상호작용해야 하기 때문에, 하드웨어에 대해 알아야만 함.
4. 컴퓨터 하드웨어가 표현되는 논리(logic) : 여러 전자 회로(circuit)로부터 만들어짐. (전자 공학에 기반)
5. 기초 과학 : 전기에 대한 이해에서부터 칩을 만들기 위해 필요한 화학에 이르기까지, 모든 것을 제공
이때, 각 계층은 자신의 아래 계층으로부터 만들어진다. 즉 아래 계층에서 설계 시 잘못된 선택을 하면 그 위의 모든 계층에 영향을 끼치게 된다는 뜻이다.
1장. 컴퓨터 내부의 언어 체계 - 컴퓨터는 어떤 말을 사용할까
비트
자연어에서 기호가 들어갈 상자, 즉 문자(character).
바이너리(2진법의) + 디지트(숫자)가 합쳐진 단어.
비트를 사용해 적은 비용으로 편리하게 기호를 담을 수 있다.
비트는 2진법을 사용하기 때문에, 비트 상자에는 두 가지 기호 중 하나만 담을 수 있다.(모스 부호의 점 or선처럼)
기호라는 개념은 추상적이며(실제로는 기호가 무엇이든 관계가 없다), 문맥 속에서만 올바르게 작동할 수 있다.
논리 연산
다른 비트들이 표현하는 내용으로부터 새로운 비트를 만들어내는 동작!
(ex "추운가"가 참이거나 "비가 오고 있는가"가 참이라면, "코트를 입는다"가 참이다)
- 불리언 대수
- 드모르간의 법칙
정수를 비트로 표현하는 방법
- 2진법
- 가장 작은 유효 비트(LSB)
- 가장 오른쪽의 비트를 변경하면, 2진수의 값이 가장 작게 변경된다.
- 가장 큰 유효 비트(MSB)
- 가장 왼쪽의 비트를 변경하면, 2진수의 값이 가장 크게 변한다.
- 오버플로(overflow)
- 우리가 사용할 비트의 개수로 표현할 수 있는 범위를 벗어날 때 발생
- MSB에서 올림이 발생했다는 의미
- 컴퓨터에는 조건 코드(상태 코드) 레지스터(condition code register)가 있어서 몇 가지 이상한 정보를 담아두는 데, 이러한 정보 중에는 overflow bit가 있고, 이 비트에는 MSB에서 발생한 올림값이 들어감. 이 비트값을 보면 오버플로 발생 여부를 알 수 있음(추후 등장!)
- 부호와 크기(sign and magnitude) 표현법
- 한 비트를 부호에 사용하고, 나머지 비트를 수의 크기, 즉 0부터의 거리(절댓값)를 표현하기 위해 사용하는 방식
- 보수(one's complement) 표현법
- 양수의 모든 비트를 뒤집어 음수를 표현하는 방식
- 2의 보수
- 어떤 수의 비트를 뒤집고(각 비트의 NOT을 취하고) 1을 추가하면 음수를 얻을 수 있음. 이때 MSB에서 올림 발생 시 이 값은 버림.
- 0의 표현 중복 문제 해결
- 비트 개수가 커지면 표현할 수 있는 값의 범위가 지수적으로! 커짐
- 고정 소수점 표현범
- 2진수를 이용해 소수를 표현하기 위해, 2진 소수점의 위치를 임의로 정하는 방식
- 디지털 신호 처리 장치 등 특별한 목적에 쓰이는 일부 컴퓨터는 여전히 고정소수점 수 사용
- but 범용 컴퓨터 - 일반적인 문제 해결 목적! => 모든 수를 몇백 비트로 표현할 경우 메모리 비용 지나치게 방대...
- 부동 소수점 표현법
- 과학적 표기법 -> 10진 소수점 왼쪽이 한 자리뿐인 소수(이를 가수 라고 함)에 10을 몇 번(이를 지수 라고 함) 거듭제곱한 값을 곱하는 방식으로 소수를 표현
- 2진법으로 표기 시 -> 10이 아닌 2를 밑으로 할 뿐!
- 즉 가수 부분은 2진 소수, 지수 부분은 2의 거듭제곱 횟수를 표현
- IEEE 부동소수점 수 표준
- 부동 소수점 수 시스템은 컴퓨터에서 계산을 수행할 때 실수를 표현하는 표준 방법!
- 기수와 지수에 대해 각각 부호 비트를 사용하며, 지수에 대한 부호 비트는 지수의 비트 패턴에 감춰져 있음 -> 낭비되는 비트 조합을 최소화하고 반올림을 쉽게 하기 위한 여러 트릭이 사용되는데 => 이 기능을 정의한 것이 IEEE 754 표준
- 정규화, 디지털 이큅먼트(digital equipment)
- 기본 정밀도 부동 소수점 수
- 2배 정밀도 부동소수점 수
'source-code > software' 카테고리의 다른 글
| 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (0) | 2023.03.23 |
|---|---|
| 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (0) | 2023.03.23 |
| 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (0) | 2023.03.21 |
| SRP! (0) | 2023.02.13 |
| 정규 표현식 기본 (0) | 2023.01.09 |