1. 비트의 저장
1.1 비트
- 컴퓨터 안에 정보들은 0과 1으로 표현된다. 이를 비트라고 부른다.
1.2 부울 연산
0은 거짓, 1은 참을 나타낸다.
1.2.1 세가지 기본 부울 연산
- AND : 두 값이 모두 참일 때 참 나머지 거짓
- OR : 두 값이 모두 거짓일 때 거짓, 나머지 참
- XOR : 두 값이 다르면 참, 같으면 거짓
1.3 게이트
AND 게이트
0 0 -> 0
0 1 -> 0
1 0 -> 0
1 1 -> 1
OR 게이트
0 0 -> 0
0 1 -> 1
1 0 -> 1
1 1 -> 1
XOR 게이트
0 0 -> 0
0 1 -> 1
1 0 -> 1
1 1 -> 0
NOT 게이트
0 -> 1
1 -> 0
1.4 플립플롭
- 컴퓨터 제작에 중요한 회로의 하나
- 0 또는 1을 값을 출력한다.
- 다른 회로로부터 출력 값을 변경하라는 펄스 신호를 받을 때까지 출력 값을 유지한다.
1.5 16진법
- 긴 비트열을 스트림이라고 부른다.
- '101101010011' 같은 스트림을 16진법을 이용해서 'B53'로 표현한다.
2. 주기억장치
2.1 셀
- 주기억 장치를 조직하는 단위
- 8비트
2.2 주소
- 개별 셀들을 구분하기 위해 각 셀에 주소가 부여된다.
2.3 RAM
- Random Access Memory
- 빠른 응답 속도, 휘발성
2.4 메모리 용량의 측정
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
...
3. 대용량 저장장치
- 낮은 휘발성, 큰 저장용량, 적은 비용의 컴퓨터 저장 장치
3.1 자기 장치
3.1.1 하드디스크
- 헤드가 디스크 위 아래에 달려있어 디스크에 저장된 정보를 읽는다.
3.1.2 트랙
- 헤드가 지나가는 길, 데이터가 저장돼있다.
3.1.3 섹터
- 한번에 처리할 수 있는 만큼의 길이로 트랙을 나눈 단위
3.1.4 자기테이프
- 릴에 감긴 얇은 플라스틱 데이프상의 자기 코팅에 정보가 기록된다.
3.1.5 플로피 디스크
- 자기 코팅이 입혀진 디스크 판 한개가 들어있는 휴대형 케이스 형태, 쉽게 탈착가능
3.2 광학 장치
- 반사 표면에 변화를 주므로로써 정보를 기록한다.
- CD, DVD, Blue-ray Disk
3.3 플래시 드라이브
- 전기신호를 이용해서 전자를 가두는 방식으로 정보를 저장한다.
- 플래시 드라이브, SSD, SD 메모리 카드
4. 비트 패턴을 이용한 정보 표현
4.1 텍스트의 표현
- ASCII : 8비트로 영문 대소문자, 구두점 기호, 0에서 9까지의 숫자, LF, CR tab등 제어문등을 표현함
- 유니코드(UTF-8) : 가변적인 인코딩 크기를 가진 테스트 표현 방식이다. 전세계 언어와 향후 확장을 염두해서 32비트 패턴까지 가능하게 만들었다.
4.2 숫자의 표현
- 2진법으로 표현한다.
- 정수를 나타낼 때는 2의 보수 또는 초과 표기법을 사용한다.
4.3 이미지의 표현
- 이미지를 점의 집합으로 해석한다.
- 점 하나를 픽셀이라고 부른다.
- 픽셀 집합을 비트맵이라고 부른다.
- RGB방식 : 적, 녹, 청색을 1바이트씩 3바이트를 이용해서 나타낸다.
- 휘도, 청색 색도 차이, 적색 색도 차이를 이용한 색 표현 방식도 있다.
- CAD : 3차원 물체의 도면을 표시하고 조작하는 시스템
4.4 소리의 표현
- 소리의 진폭의 변화를 기록하는 방식을 사용한다.
- 초기 전화에 초당 8000개의 진폭을 기록함, 초당 더 많은 수의 진폭을 기록할 수록 고품질이 됨
- 비디오 게임 사운드, 웹사이트 음향 효과에는 MIDI를 사용함
- MIDI : 어떤 시각에 어떤 악기를 몇초간 연주해라라는 정보가 들어있다. -> 적은 용량으로 기록가능
5. 2진 체계
5.1 2진법 ( 생략 )
5.2 2진 덧셈 ( 생략 )
5.3 분수의 2진법 표현
- 101.101 정수부, 소수부로 나눠서 계산한다.
- 1*(2^2)+0*(2^1)+1*(2^0).1*(2^-1)+0*(2^-2)+1*(2^-3)
6. 정수의 저장
6.1 2의 보수 표기법
비트패턴 | 표현 값 |
011 | 3 |
010 | 2 |
001 | 1 |
000 | 0 |
111 | -1 |
110 | -2 |
101 | -3 |
100 | -4 |
- 가장 왼쪽 비트를 부호비트라고 한다.
- 정해진 비트 패턴이 넘어가는 수는 표현할 수 없다. 표현되더라도 이상한 값이 출력된다.
- 위 예시에서는 최대값이 3이다. 만약 3 + 1을 계산하면 100 이 되고 -4가 된다.
- 이를 오버플로우라고 한다.
6.2 초과 표기법
비트패턴 | 표현 값 |
111 | 3 |
110 | 2 |
101 | 1 |
100 | 0 |
011 | -1 |
010 | -2 |
001 | -3 |
000 | -4 |
7. 소수의 표현
7.1 소수의 표현
- 부동소수점 표현 : 부호비트, 지수, 유효숫자를 이용해서 소수를 표현한다.
- 정규형에 맞춰서 표현해줘야 하나의 소수를 표현할 때 한가지 표현법만 존재하게 된다.
- 제한된 유효숫자 비트를 넘어서는 표현을 하고 싶을 때 절삭오차가 발생한다.
더 알아보기 : codetorial.net/articles/floating_point.html
8. 데이터와 프로그래밍
- 파이썬에 대한 내용이므로 생략
9. 데이터 압축
9.1 일반적인 데이터 압축 기법
- 무손실 압축 : 압축 해제시 원본과 같은 데이터가 나온다. 일반적으로 손실 압축보다 낮은 압축률을 보인다.
- 손실 압축 : 압축 해제시 원본과 다른 데이터가 나온다. 일반적으로 무손실 압축보다 높은 압축률을 보인다. 비디오 같은 어느정도 손실을 허용할 수 있는 환경에서 사용한다.
- RLE : 000000011111111100000 이라는 수를 표현할 때 0이 7번 나온 후, 1이 9번 나온 후, 0이 5번 나온다라고 표현하는 방법이다. 연속된 수가 많으면 많을 수록 압축률이 높아진다.
- 허프만코드 : 등장하는 문자패턴에 빈도수를 조사해서 빈도수가 높은 것에는 짧은 코드로 인코딩하고 빈도수가 낮은 것에는 긴 코드로 인코딩하여 압축하는 방법, 빈도 종속 인코딩
- 차등 인코딩, 상대적 인코딩 : 비디오 프레임을 압축할 경우 이전 장면과 현재 장면의 차이만을 저장해서 압축하는 방식이다.
- 사전 인코딩 : 사전에 모든 데이터 패턴들이 들어있어서 인코딩 값과 대응이 돼있다. 무손실로 만들 수 있지만 사전의 크기가 너무 커져서 사전에는 근사값 몇개만 저장해놓는다. 따라서 손실 압축이 된다.
- 적응적 사전 인코딩 : 데이터를 읽으면서 사전을 만들어 간다. 디코딩시 적은 크기의 사전만 참조하면 원래 값을 얻을 수 있다. 대표적으로 LZW가 있음.
9.2 이미지의 압축
- GIF : 사전 인코딩 방법을 사용한다. 적, 녹, 청 조합을 256개로 표현한다. 손실 압축이다.
- JPEG : 8*8 픽셀 사각지의 값들을 DCT라는 변환 공식에 넣어서 값을 얻어내서 압축한다. 디코딩시 손실이 있지만 사람이 알아차리기 어려운 수준이다.
- TIFF : 주로 팩스를 보낼 때 사용하는 압축방식이다. 흰색 바탕이 대부분이라는 점을 고려하여 RLE 압축법을 이용해서 압축한다. 원래는 압축을 위한 것이 아니라 날짜, 시간, 카메라 설정을 함께 저장하기 위한표준 형식으로 사용함.
9.3 오디오 및 비디오의 압축
- MPEG : 비디오는 연속된 사진이다. JPEG로 인코딩하고 인코딩 된 값의 차등 인코딩을 이용해서 비디오를 인코딩한다.
- MP3 : 사람의 청각기관의 특성을 이용한 큰소리를 듣고난 후 짧은 시간 작은 소리가 들리지 않음(시간적 차폐효과), 특정 주파수가 주변 주파수를 가림(주파수 차폐효과)
- bps (bits per second) : 초당 보내지는 비트 크기, 압축만 중요한게 아니라 정확한 시간에 모든 데이터를 보여주는 것도 중요하다. 그러기 위해서는 일정수준 이상의 통신수준을 보장해주어야 한다.
10. 통신 오류
10.1 패리티 비트
- 송신할 때 비트 패턴과 수신 할 때 비트 패턴이 다르면 통신 오류가 발생한 것이다.
- 통신 오류를 검출하기 위해서 패리티 비트를 사용한다.
- 짝수 패리티와 홀수 패리티가 있다.
- 짝수 패리티는 전체 비트 패턴에 1의 개수가 홀수라면 1이라는 패리티 비트를 추가해서 전체 1의 개수가 짝수가 되게 만드는 것이다. 마찬가지로 전체 비트 패턴에 1의 개수가 짝수였다면 0이라는 패리티 비트를 추가한다.
- 홀수 패리티는 전체 비트 패턴에 1의 개수가 짝수라면 1이라는 패리티 비트를 추가해서 전체 1의 개수가 홀수가 되게 만드는 것이다. 마찬가지로 전체 비트 패턴에 1의 개수가 홀수였다면 0이라는 패리티 비트를 추가한다.
- 패리티 비트를 추가한 비트패턴을 송신한다.
- 홀수패리티를 사용하는 상황에서 수신측에서 받은 비트 패턴에 1의 개수가 짝수였다. 그렇다면 통신 오류가 발생했다는 것을 알 수 있고 재송신을 요청하면 된다.
- 두 비트 이상 오류가 생기면 오류검출이 되지 않는다. (8비트 크기의 비트 패턴에서는 좋은 성능을 보이지만 긴 비트패턴에서는 두 비트 이상 오류가 생기기 쉽다)
- 검사바이트 : 긴 패턴에서 첫번째 비트에서 시작해서 8비트씩 떨어져 있는 비트들에 연계된 패리티 비트를 검사바이트 첫 비트에 추가한다. 긴 패턴에서 두번째 비트에서 시작해서 8비트씩 떨어져 있는 비트들에 연계된 패리티 비트를 검사바이트 두번째 비트에 추가한다. 이런 식으로 패리티 비트에 변형을 주어 2개 이상의 비트 오류도 검출할 수 있게 만든다. checksum, CRC 같은 것이 이에 해당한다.
10.2 오류 정정 코드
- 오류 검출을 넘어 오류 정정도 가능하게 해보자, 진공관 컴퓨터의 신뢰성을 향상하고자 해밍이 개발한 오류 정정법
- 해밍 거리 : 임의의 두 코드를 비교했을 때 다른 비트의 개수를 센다. 이를 해밍 거리라고 한다.
- 해밍 거리의 최솟이 3이 되게 만든 오류 정정 코드를 만든다.
- 수신된 코드와 오류 정정 코드의 해밍거리를 구한다. 그 중 해밍거리가 최소가 되는 코드를 찾아는다. 그 코드와 매핑된 문자가 원본 데이터이다.
[오류 정정 코드의 예]
기호 | 코드 |
A | 000000 |
B | 001111 |
C | 010011 |
D | 011100 |
E | 100110 |
F | 101001 |
G | 110101 |
H | 111010 |
'지식 공유' 카테고리의 다른 글
[apache] http를 이용한 파일 공유하기 (0) | 2020.10.14 |
---|---|
[Apache] 다른 사이트로 포워딩하기 (0) | 2020.10.14 |
컴퓨터과학 총론 요약 - 0.서론 (0) | 2020.10.13 |
code-server로 vscode 웹에서 사용하기 (0) | 2020.10.07 |
[네트워크] 클래스와 서브넷 마스크 완전 정복 (0) | 2020.08.25 |