들어가며
- 정확한 문법을 파고들기보다는, 컴퓨터 세계에 있는 여러 문제와 해법을 살펴본다.
- 코딩 : 기계적인 활동?
- 프로그래밍 : 문제를 관찰하고 해법을 결정
- 엔지니어링 :
- 컴퓨터과학 : 계산에 대해 연구하는 학문
- 컴퓨터 과학의 영역
: 사용자 > 어플리케이션 프로그래밍 > 시스템 프로그래밍 > 컴퓨터 하드웨어 > 논리 설계 > 회로 설계 > 기초 과학
: 시스템 프로그래밍 : 하드웨어와의 상호작용
: 논리 : 컴퓨터 하드웨어는 논리로 표현됨. 논리는 전자 회로로부터 만들어진다.
part 1. 컴퓨터 하드웨어
part 2. 하드웨어에서 소프트웨어가 작동하는 방식
part 3. 프로그래밍 기술
1장. 컴퓨터 내부의 언어 체계
언어란 무엇인가
- 기호가 들어갈 상자
- 상자에 들어갈 기호
- 상자의 순서
비트
bit : 기호를 담는 상자 2진법
논리 연산
true, false
다른 비트로부터 새로운 비트를 만들어내는 동작들
logic operation
- 불리언 대수 boolean algebra
NOT AND OR XOR
- 드 모르간 법칙
a AND b = NOT(NOT a OR NOT b)
정수를 비트로 표현하는 방법
- 양의 정수 표현
2를 밑으로 하는 2진수로 수를 표현한다.
01100010011와 같은 비트에서
가장 왼쪽 비트(가장 큰 수를 표현)를 MSB Most Significant Bit
가장 오른쪽 비트(가장 작은 수를 표현)를 LSB Least Significant Bit라고 한다.
- 2진수 덧셈
오버플로우 : 비트 개수로 표현할 수 있는 범위를 벗어나는 경우(==MSB에서 올림이 발생)
조건 코드 레지스터 condition code register : 여기에 몇 가지 정보를 담아두는데, overflow bit가 있어서 이 경우에 MSB에서 발생한 올림값을 저장해둔다.
Underflow : MSB 위쪽에서 1을 빌려오는 경우
- 음수 표현
1) sign and magnitude 표현법
가장 왼쪽 비트인 MSB를 부호로 사용한다.
0 => 양수
1 => 음수
비트가 1010101010 이렇게 있으면,
MSB인 1은 음수임을 나타내고,
나머지 부분은 수의 절댓값 크기를 나타낸다. (magnitude)
sign and magnitude 표현법
2) 1의 보수
양수의 모든 비트를 뒤집어준다.
비트를 부호 비트 / 나머지 비트로 나눈다.
NOT 연산을 통해 보수를 얻는다.
=> 그러나 이때 0을 두 가지 방식으로 표현함
==> end-around carry 방식으로 해결 가능함
3) 2의 보수 two's complement
signed int 표현할 때 가장 많이 사용함
어떤 비트에서 음수를 얻는 방법
- 비트를 뒤집기
- 끝에 1을 더하기
실수를 표현하는 방법
실수는 어떻게 표현하지? decimal point를 2진 소수점으로 바꾸어 표현해야 함
- 고정소수점 표현법 fixed-point
2진 소수점의 위치를 임의로 정해준다.
4비트 중 2비트는 정수를 표현, 2비트는 분수를 표현하도록 결정
DSP 디지털 신호 장치 등 특정 목적을 위해 쓰이는 컴퓨터에서는 괜찮기도 함.
but, 일반적인 문제를 해결하는 범용 컴퓨터에서는 유용하지 않음
- 부동소수점 표현법 floating point
과학적 표기법을 적용한다.
0.0012 말고, 1.2 * 10^-3이라고 표기하는 것
가수, 지수 부분을 이용해서 부동소수점을 표현한다.
- IEEE 부동소수점 수 표준
floating point 방식에서 하나의 수를 여러 방식으로 표기할 수 있다는 비효율성을 해결하기 위해 표준을 도입함
IEEE : Institute of Electrical and Electronic Engineers
정규화 normalization을 이용해서 맨 앞에 0이 없도록 조정한다.
=> single precision floating point
32 bit, 7 bit 정밀도
=> double precision floating point
64 bit, 15 bit 정밀도
2진 코드화한 10진수 시스템
BCD Binary Coded Decimal
2진수를 다루는 쉬운 방법
- 8진 표현법 octal representation
- 16진 표현법 hexadecimal representation
16진 표현법이 더 많이 쓰임.
컴퓨터 내부가 8 bit 배수로 만들어지는데,
8의 배수는 3 bit(8진수 한 자리 비트 수)로는 균일하게 나누어지지 않기 때문에..
- 프로그래밍 언어의 진법 표기법
0으로 시작하면 8진수
0x로 시작하면 16진수
1~9로 시작하면 10진수
비트 그룹의 이름
- byte : 8 bit
- word : 32 bit 컴퓨터가 설계상 자연스럽게 사용할 수 있는 비트 묶음의 크기
- double word : 64 bit
텍스트 표현
- 아스키 코드
ASCII American Standard Code for Information Interchange
키보드 모든 기호에 7비트 수를 할당하였음
문자 뿐만 아니라, control character도 있음
NUL(null), STX(start of text) 등등
이들은 통신 제어를 위한 문자임
- 다른 표준의 진화
다른 언어
- 유니코드 변환 형식 8비트
인코딩 : 다른 비트 패턴을 표현하기 위해 사용하는 비트 패턴
문자를 사용한 수 표현
문자를 이용해서 수를 표현하고 싶어했음.
2진 데이터를 직접 보내는 데 어려움이 따랐기 때문.
- 출력 가능하게 변경한 인코딩 Quoted-Printable encoding
8비트 데이터를 7비트 데이터만 지원하는 통신 경로를 통해 송수신하기 위한 인코딩 방식
= 다음에 16진 숫자 2개를 추가함
- 베이스64 인코딩 Base64 encoding
- url 인코딩 percent encoding
% 뒤에 문자의 16진 표현을 덧붙여 문자를 인코딩
색을 표현하는 방법
그림 원소 picture element => pixel
RGB color model
- 투명도
- 색 인코딩
'Computer Science > 컴퓨터구조' 카테고리의 다른 글
한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 3장 메모리와 디스크의 핵심 : 순차 논리 (0) | 2022.04.11 |
---|---|
회로도 기호 모음 (0) | 2022.04.08 |
한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 15장 훌륭한 프로그래머가 되기 위한 팁과 경험담 (0) | 2022.04.07 |
한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 2장 전자 회로의 조합 논리 (0) | 2022.03.25 |
논리설계 (0) | 2022.03.11 |