웹어셈블리 #1 Emscripten 시작하기
컴퓨터 및 소프트웨어 공부하기 – 전자계산기의 구조 #2
2019-05-08
Explanation
저번 글에 이어 컴퓨터 및 소프트웨어 공부 두번째 시간입니다.
오늘은 자료의 내부적 표현과 외부적 표현 강의에 대해 공부하고 정리해 보려 합니다.
참고 유튜브 : https://www.youtube.com/watch?v=NoSDLu0Vgy4
역시 이 글도 개인적인 메모라 별로 유익하지는 않을 거 같아요..
A. 자료의 내부적 표현
자료의 내부적 표현 = 컴퓨터에게 숫자를 어떻게 표현할것이냐 (수치표현)
정수 – 고정소수점 – (-2, -1, 0, 1, 2, …)
실수 – 부동소수점 – (2/1, 3/1, 0.1, 0.12, …)
1. 고정소수점 표현
1 2 3 4 5 6 7 8 |
정수(고정소수점) * 10진 연산 - Unpack (ZONE) - Pack * 2진 연산 - 부호화 절대치 표현 - 부호화 1의 보수 표현 - 부호화 2의 보수 표현 |
1-1. 10진 연산의 표현
10진수 1자리를 2진수 4자리로 표현하는 방식
ex. 10진수 46을 2진화 10진코드로 표현하면 4 = 0100, 6 = 0110 으로 46 = 01000110
// 01000110 = 2진화 10진코드(BCP) 표현
* Unpacked(ZONE) format – 1Byte로 1자리 표현
[Zone][Digit][Zone][Digit] … [Sign][Digit]
Sign = 부호를 나타내며 양수:C, 음수: D
1 2 3 4 5 |
ex. 1234 를 Unpacked format 으로 표현하면 > F1F2F3C4 F는 Zone을 나타내는 1로 채워진 영역으로 2진수로 표현하면 1111 > 1111 0001 1111 0010 1111 0011 1100 0100 1100 = 12 = C = 양수 |
1 2 3 4 5 |
ex. -1234 를 Unpacked format 으로 표현하면 > F1F2F3D4 F는 Zone을 나타내는 1로 채워진 영역으로 2진수로 표현하면 1111 > 1111 0001 1111 0010 1111 0011 1101 0100 1101 = 13 = D = 음수 |
* Packed format – 1Byte로 2자리 표현
[Digit][Digit][Digit] … [Digit][Sign]
Sign = 부호를 나타내며 양수:C, 음수: D
1 2 3 4 |
ex. 1234 를 Packed format 으로 표현하면 > 01234C 2진수로 표현하면 > 0000 0001 0010 0011 0100 1100 |
1 2 3 4 |
ex. -1234 를 Packed format 으로 표현하면 > 01234D 2진수로 표현하면 > 0000 0001 0010 0011 0100 1101 |
1-2. 2진 연산의 표현
10진수 전체 값을 2진수로 변환하여 표현하는 방식
Sign = 부호를 나타내며 양수: 0, 음수: 1
* 음수 표현 방법
예를 들어 -25를 표현한다고 한다면
1 2 3 4 5 6 |
* 부호화 절대치 > 25를 2진수로 표현하면 11001 / 8자리로 표현하면 0011001 / 맨 앞자리 음수표현 / 10011001 * 부호화 1의 보수 > 위 10011001 의 1의 보수 11100110 (맨 앞자리는 양수/음수를 나타내기에 바뀌지 않음) * 부호화 2의 보수 > 위 11100110 + 1 = 11100111 |
부호화 절대치, 부호화 1의보수의 표현 범위
-(2n-1-1) ~ (2n-1-1)
부호화 2의보수의 표현 범위
-2n-1 ~ 2n-1-1
2. 부동 소수점 표현
[부호][지수부][가수부]
<특징>
* 매우 큰 수 나 매우 작은 수를 표현할 때 사용
* 표현의 정밀도를 높일 수 있음
* 수 표현에 필요한 자리 수에 있어 효율적임
* 과학이나 공학, 수학적인 응용에 주로 사용되는 수 표현
* 부동 소수점 수의 연산은 고정 소수점 연산에 비해 복잡하며, 연산 시간이 많이 걸림
<부동 소수점에서 음수 표현법>
지수는 부호와 관계없이 bias 값에 더함
가수의 부호가 양수(+)이면 0, 음수(-)이면 1로 표현
B. 자료의 외부적 표현
1. ASCII 코드
IBM사에서 개발, (데이터 통신)* 및 마이크로 컴퓨터에서 많이 채택됨
7BIT 코드로 128개의 문자를 표현
2. BCD 코드(2진화 10진코드)
<특징>
* 10진수 1자리의 수를 2진수 4bit로 표현
* 8421코드라고도 함
* 대표적인 (가중치 코드)*
* 10진수 입, 출력이 간편
* 자체 보수화는 불가능
1 2 |
예. 456 => 0100 0101 0110 |
3. EBCDIC 코드(확장 2진화 10진코드)
IBM사에서 개발한 것으로 대형 컴퓨터용으로 쓰임
8개 피트(4개의 ZONE BIT – 4개의 DIGIT BIT)와 1개의 패리티 비트로 구성됨
[ZONE-A][ZONE-A][ZONE-B][ZONE-b][DIGIT][DIGIT][DIGIT][DIGIT]
1 2 3 4 5 6 7 8 9 10 |
ZONE-A 00 : 여분 01: 특수문자 10 : 소문자 11 : 대문자 ZONE-B 00 : A ~ I 01 : J ~ R 10 : S ~ Z 11 : 숫자 |
1 2 3 4 |
예. 10001010 = a [ZONE-A] = 10 [ZONE-B] = 00 [DIGIT] = 1010 |
1 2 3 |
BCD - 6BIT = 65개 문자표현 (Zone 2개, Digit 4개) ASCII - 7BIT = 128개 문자표현 (Zone 3개, Digit 4개) EBCDIC - 8BIT = 256개 문자표현 (Zone 4개, Digit 4개) |
4. 3초과 코드
10진수를 표현하기 위한 부호
BCD부호에 3을 더한 것과 같음
1 2 3 |
10진수 8을 3초과 코드를 구하면 8 + 3 = 11 11 = 1011 답: 1011 |
5. 패리티 검사 코드
오류 검사를 위해 data bit 외에 1bit의 패리티 체크 비트를 추가하는 것
배리티비트 : 오류 검출을 위해 사용하는 비트
1Bit의 오류만 검출 가능
홀수 패리티, 짝수 패리티가 있음
6. 그레이 코드
A/D변환, 입/출력 장치 등에 주로 사용됨.
1 2 3 4 5 6 7 8 |
예1> 2진수 1010을 그레이 코드로 변환하면 1, 1+0=1 , 0+1=1, 1+0=1 = 1111 예2> 2진수 11011을 그레이 코드로 변환하면 1, 1+1=0, 1+0=1, 0+1=1, 1+1=0 = 10110 |
8. 해밍 코드
오류 검출 및 교정이 가능한 코드
1Bit의 오류만 교정할 수 있음
해밍코드의 1,2,4,8, … 2의 N승 번째는 오류검출을 위한 패리티 비트임
예: 해밍코드 전체가 16비트인 경우 1,2,4,8,16 5bit는 패리티비트, 나머지 11bit은 데이터비트이다.
9. 코드의 분류
1 2 3 4 |
가중치 코드 = BCD(8421) 코드, 2421 코드, Biquinary 코드, 51111코드, 7421 코드 비가중치 코드 = 3초과 코드, 그레이 코드, 2 out-of 5 코드 자기 보수 코드 = 3초과 코드, 2421 코드, 51111 코드 오류 검출용 코드 = Hamming 코드, 패리티 검사 코드, Biquinary 코드, 2 out-of 5 코드 |
처음 듣는 코드들이 많이 보이는데…