01 진법과 진법 변환
[1] 디지털 정보의 단위
bit
; 컴퓨터 정보를 나타내는 가장 기본 단위 (0과 1 두 가지 상태만 저장 가능)
- nibble == 4bit, byte == 8bit
- n 비트로 2^n 개의 상태 표현이 가능
byte
- 영어는 1바이트(52개 필요), 한글은 2바이트가 필요(11172개 필요)
[2] 진법
기수
; 진법을 나타내는 기본 수
- 기수가 10이면 10진법, 기수가 2면 2진법
10진법
; 각 자릿수를 0-9 사이의 수로 나타냄.
소수점을 왼쪽은 10의 양의 거듭 제곱, 소수점 오른쪽 10의 음의 거듭 제곱
2진법
; 0과 1 기호 2개를 사용
8진법
; 0부터 7까지 기호 8개 사용
cf) 컴퓨터 구조나 어셈블리어에서는 16진수를 많이 사용
[3] 진법 변환
; 정수 부분은 바꾸려는 진법의 기수로 나누어 그 나머지를 적고, 소수 부분은 기수를 곱해 정수가 되는 부분을 적음
n진수를 10진수로 변환
case 1 : 2진수를 10진수로 변환
case 2: 8진수를 10진수로 변환
case 3: 16진수를 10진수로 변환
10진수를 2진수로 변환
10진수를 8진수로 변환
10진수를 16진수로 변환
2진수-8진수-16진수 상호 변환
2진수 3개 == 8진수
2진수 4개 == 16진수
02 정수 표현
고정 소수점 수
; 소수점이 마지막 자리 뒤에 고정되어 소수점을 표현하지 않는 수
- 양의 정수, 0, 음의 정수로 표현
부동 소수점 수
; 소수점이 떠다니면서 움직임
- 소수점의 위치가 수 크기에 따라 이동
[1] 보수의 개념과 음수
부호 비트
; 최상위 비트를 이용하여 양수는 0, 음수는 1로 표시
2진수의 음수와 양수 표현 방법
부호와 절댓값 방식
; 10진수를 2진수로 바꾼 그대로 + 최상위 비트에 부호 표시
1의 보수 방식
; 0은 1로, 1은 0으로 바꿈
2의 보수 방식
; 1의 보수를 구한 후 +1
cf) 부호와 절댓값 방식의 1의 보수 방식이 컴퓨터 연산에 부적합한 이유 : -0과 +0이 존재하기 때문
r의 보수와 r-1의 보수
; 10진수에는 9의 보수와 10의 보수가 있음
ex) 10진수 567의 9의 보수는 432, 10의 보수는 433
정수 표현 범위
2의 보수를 10진수로 변환
양수일 경우 : 원래 계산하던 것처럼 계산
음수일 경우 : 2의 보수를 취한 후, 양수 계산처럼 계산하고 - 부호 붙이기
[2] 부호 확장
; 늘어난 비트 수만큼 부호를 늘려주는 방법
[3] 2진 정수 연산
뺄셈 : A-B ⇒ A+(B의 2의 보수)
1-4번은 잘 된다. 음수면 2의 보수 취하고, 아니면 그냥 놔두고 계산하면 된다.
8비트의 가상 상위 비트가 부호 비트가 된다.
5-6의 경우, 잘못된 출력 결과가 나온다.
오버플로우가 발생했기 때문에!
8비트의 경우 -128~+127까지만 표현이 가능한데, 5번과 6번은 해당 범위를 벗어났다.
그렇기 때문에 부호 확장을 해야 한다.
부호 확장을 하면,
5번은 00000000 10101100이 되고, 6번은 11111111 01010100이 된다.
[4] 10진 정수 표현
팩 10진 형식
; 1바이트에 digit 2개를 8421 코드로 나타내고 최하위 바이트의 zone 부분에 4비트의 부호를 표현
- 부호는 양수는 C(1100), 음수는 D(1101), 부호가 없는 양수는 F(1111)
cf) 8421 코드 == BCD 코드(가중치를 두어서 표현)
언팩 10진 형식
; 1바이트가 존 부분과 디지트 부분으로 구성
- 존 부분에는 F(1111)이 들어가고, 디지트 부분은 8421 코드로 표현된 숫자가 들어감
- 부호는 양수는 C(1100), 음수는 D(1101), 부호가 없는 양수는 F(1111)
cf) 계산은 팩 10진으로 하고, 표현은 언팩 10진으로 함
03 실수 표현
부동 소수점 수 (ex. 1.23456 * 10^2)
- 부호는 양수와 음수
- 지수는 2를 의미
- 가수는 소수 이하 부분
- 바이어스는 양의 지수와 음의 지수를 표현
계산된 지수 값에 바이어스를 더하는 방식으로 사용하는 방식으로 사용
정규화
; 가수에 저장될 데이터를 2진수로 표현하는 것
04 디지털 코드
[1] BCD 코드
이렇게 표현하는 것
BCD 코드끼리 더했을 때 결과가 9를 초과하여 BCD 코드를 벗어나면 결과에 6(0100)을 더하기
[2] 3초과 코드
; BCD에 3(0011)을 더한 코드
- 컴퓨터는 0과 1이 고루 들어오길 원해서 3초과 코드를 사용
[3] 그레이 코드
; 아날로그-디지털 변환기나 입출력 장치 코드로 사용(연산에는 부적합)
- 연속 코드 간에 한 비트만 변경됨
2진 코드를 그레이 코드로 바꾸는 법
ㄱ자 모양이라고 생각하자
그레이 코드를 2진 코드로 바꾸는 법
2 모양이라고 생각하자
[4] 다양한 2진 코드
가중치 코드
; 각 비트의 위치에 따라 값이 정해진 코드
비가중치 코드
; 각 위치에 해당하는 값이 없는 코드
[5] 영숫자 코드
; 숫자와 알파벳 문자들을 표현한 코드
표준 BCD 코드
; 6비트로 한 문자를 표현
- 상위 2비트는 존 비트, 하위 4비트는 디지트 비트
- 에러 검사용 검사 비트 젤 좌측에 추가
- 64가지 문자 표현
ASCII 코드
; ANSI가 제정한 정보 교환용 미국 표준 코드
- 3비트 존과 4비트 디지트에 1비트 패리티 비트를 추가하여 만든 8비트 코드
- 128가지 문자 표현
A를 읽는다고 했을 때, A의 코드는 어떻게 될까?
A = 41 = 16*4 + 1*1 = 64 = 0110 0100
Uploaded by Notion2Tistory v1.1.0