자료 종류와 표현
- 자료의 표현
- 수치 자료
- 정수 표현(고정소수점 수의 표현)
- 10진 연산
- 팩(packed) 연산
- 언팩(unpacked) 연산
- 2진 연산
- 부호화 크기
- 1의 보수
- 2의 보수
- 실수 표현(부동소수점 수의 표현)
- 문자 자료
- BCD code(Binary Coded Decimal): 2진화 10진 코드
- EBCDIC code: 확장된 2진화 10진 코드
- ASCII code: 정보 교환 미국 표준 코드
- 논리 자료
- 포인터 자료
- 문자열 자료
- 수치자료
- [정수, 고정소수점]10진 연산
- 팩(packed) 연산
- 1바이트에 10진수 두 자리를 표현 → 처리시간 단축 & 효율적으로 기억공간 이용
- 컴퓨터 내부적으로 연산할 때 사용하는 형식. 입출력 불가.
- 1 바이트에 2 개의 디지트(digit)를 각각 8421 BCD 코드로 표시
- 언팩 10진법은 연산이 불가능
→ 연산 전에 팩 10진법 형식으로 변환시켜 연산
→ 연산 결과 출력할 때 다시 언팩 10진수로 변환 - 구성
- 양수인 경우: C(1100)
- 음수인 경우: D(1101)
- 부호가 없는 경우: F(1111)
- 언팩(Unpacked) 연산
- 개요
- 1 바이트에 10진수 한 자리를 표현하므로
- 처리 시간이 많이 소요되고
- 기억 공간의 낭비 초래
- 자료 입출력에 사용되며 zone 형식이라고도 함
- 주기억장치에 자료가 기억될 때 사용되는 형식. 부호는 pack 형식과 같다
- 구성: 앞 4bit는 zone영역(F = 1111)과 뒤 4bit는 digit 영역
- 양수인 경우: C(1100)
- 음수인 경우: D(1101)
- 부호가 없는 경우: F(1111)
- [정수, 고정소수점]2진 연산
- 정의
- 2진법으로 표시되는 정수는
- 부호 비트 부분과
- 크기 표시 부분으로 나눈다
- 소수점의 위치가 고정되어 있는 수로 정수를 표현
- 음수 표현법
- 부호화 크기
- 1의 보수
- 2의 보수
- 보통 컴퓨터와 외부와의 입출력에 사용. 유효 숫자에 비해 자릿수가 너무 크기에 직접 컴퓨터에 저장하는 데 효율적이지 못함
- 보수가 필요한 이유
- 보수를 이용하면 뺄셈을 덧셈의 원리로 가능
→ 가산기로 모든 사칙 연산 가능
→ 감산기 불필요 - 부호화 크기(signed magnitude) 표현
- MSB(Most Significant Bit)
- 음수 표현이 가장 간단하지만 감/가산기 모두 필요하므로 하드웨어 비용 증가
- 수의 표현 범위: -(2^(n-1) -1) ~ (2^(n-1) - 1), +0과 -0 존재.
- 1의 보수 표현
- 음수 표현 시 0은 1로, 1은 0으로 바꾼다
- 덧셈할 때 순환 자리 올림(end around carry) 발생 가능
→ 연산 시 올림수를 더해야 한다 - 수의 표현 범위: -(2^(n-1) -1) ~ (2^(n-1) - 1), +0과 -0 존재.
- 2의 보수
- 과정: A - B = A + (-B)
- 감소시킬 값(B)의 2의 보수를 찾는다
- A에 B의 2의 보수를 더한다
- 마지막으로 올림수가 1이면 양수이고 true 형태
마지막으로 올림수가 0이면 음수이고 2의 보수 형태 - 예제: 9 - 4
- A = 9 = 1001
B = 4 = 0100 - B의 2의 보수는 “1의 보수 + 1”
→ 0100의 1의 보수는 1011
→ 1011 + 1
→ 1100 = -B(-4) - 1001 + 1100
→ 1(final carry) 0101
→ 마지막 올림수가 1이면 양수이고 무시
→ 0101 = 5 - +0과 -0이 표현되는 것 해결
- 수의 표현 범위: -(2^(n-1)) ~ (2^(n-1) -1), +0 존재.
- 4개의 변수(0000)에 대하여 -8부터 7까지의 범위
→ 4비트(9)와 4비트(4)의 계산 결과 5비트(10101)가 나오지만 표현이 불가능. 따라서 21이지만 -8과 7의 범위를 초과하므로 1은 overflow로 무시 - 오버플로우의 조건
- x와 y는 두 수(A와 B)의 sign bit
x'는 x의 보수, y'는 y의 보수 - z는 결과의 sign bit
z'는 z의 보수 - x'·y'·z + x·y·z'
- = 0 → no overflow
- = 1 → overflow
- 예제: 0110 - 1011
- A = 6 = 0110
B = 11 = 1011 - B의 1의 보수는 0100
B의 2의 보수는
→ 0100 + 1 = 0101 = 5 - 0110
+0101(= -11)
→1011 → 마지막 올림수(final carry)가 0이므로 음수
→ 1의 보수 형태 + 1 = 2의 보수 형태
→ 0100 + 1 = 0101 = 5
→ 음수이므로 -5 - 8비트에서 10진수 25를 표현하는 경우
- 2의 보수 계산 예제: -9 + 5 = -4
- [실수] 부동소수점 수(floating point number)의 표현
- 개요
- 표현 형식
- 부호부
- 지수부
- 가수부
- 큰 수와 작은 수의 표현이 정밀도를 요구하는 과학, 기술 계산에 이용
- 지수 + 가수의 형태로 지수부(exponent)는 8bit로 표현
- 정규화(normalize)는 소수점을 이동하여 소수 첫째 자리에 유효 숫자가 오도록 하여 지수부 + 가수부의 형태로 만드는 것으로 연산속도를 느리게 한다
- 장점
- 수의 크기를 간단히 비교 가능
- 표현된 수의 정밀도 높일 수 있음
- 유효숫자의 범위 넓힐 수 있음
- 예제
- 바이어스(bias)
- bias값은 부동소수점 표현에서 지수를 나타내기 위한 비트수 크기 결정 역할
- if bias = 64
→ 64 x 2 = 128
→ 지수부 비트수가 7비트
→ 000 0000 ~ 111 1111, 즉 0 ~ 127승의 표현이 가능 - 127바이어스: 255가지의 수를 양수와 음수로 표현하면 “-126 ~ 0 ~ +127”승이 존재
→ 지수부 값이 127(=(0111 1111)2)일 때 0승(기준) - 문자 자료
- BCD(Binary Coded Decimal) code
- 개요
- 2bit의 zone bit + 4bit의 digit bit
- 알파벳 대문자와 소문자 구별 불가.
- 26(64)가지의 문자 표현이 가능
- 숫자는 4bit, 문자는 6bit 필요
- 구성
- EBCDIC(Extended Binary Coded Decimal Interchange) code
- 개요
- BCD 코드에 zone 영역을 2bit 추가
→ 8bit로 하나의 문자 표현하는 확장된 2진화 10진 코드 - 28(256)가지 문자 표현이 가능
- 구성
- ASCII(American Standard Code for Information Interchange) code
- 개요
- 한 개의 parity bit* + 실제 정보 표현하는 7bit(zone bit 3개 + digit bit 4개)
*정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트. - ASCII코드는 데이터 전송시 표준 코드로 사용
→ EBCDIC 같은 코드 사용하는 컴퓨터에서는 통신 시 코드 변환 필요 - 구성
- 유니코드(Unicode)
- 개요
- ASCII 코드의 한계성 극복 위해 개발된 인터넷 시대의 표준
- 유니코드 컨소시엄에 의해 UTF-32(32bit), UTF-16(16bit), UTF-8(8bit)의 세 가지 기본 코드 개발
*UTF = Unicode Transformation Format - 유니코드는 4byte로 구성되어 사용하는 코드 범위에 따라 1~4byte로 변환 가능. UTF-7, UTF-8, UTF-16BE, UTF-16LE 등.
- 미국, 유럽, 동아시아, 아프리카, 아시아 지역 등 주요 언어들에 적용 가능
- 한글코드
- 개요
- ASCII코드를 기반으로 16비트를 사용하여 하나의 문자를 표현
- 조합형과 완성형으로 분류
- 조합형 한글의 원리는 초, 중, 종성에 해당하는 문자를 각각 부호화하여 문자에 따라 부호를 조합하여 만드는 방식.
- 역사
- 컴퓨터가 한글을 표현하기 시작하던 1980년대에는 2바이트 조합형 한글을 주로 사용. 그러나 초, 중, 종성을 조합하는 부호표가 각 업체마다 달라서 A사의 컴퓨터에서 작성한 프로그램이 B사의 컴퓨터에서는 한글이 깨지는 문제가 발생
- 정부는 한글 전자 문자 표준의 제정의 필요성을 느끼고 표준을 제정하게 되는데, 당시 학계에서는 조합형 한글이 한글 창제의 원리에 부합하고 모든 활자를 표현 가능하므로 조합형을 표준으로 제안하였으나 정부는 완성형 한글을 표준(KS_C_5601_1987)으로 제정
- 완성형의 문제로 1992년 기존 KSC5601 완성형과 함께 조합형 한글을 함께 수용할 수 있는 KSC5601-92를 표준으로 제정하여 현재까지 사용
- KSC5601-92 표
- EUC(Extend Unix Code)
- 유닉스에서 영어를 제외한 문자를 표시하기 위한 확장 부호
- euc-kr은 한글 표현 위한 문자 인코딩. 영문은 KSC5636, 한글은 KSC5601로 처리.
- euc-kr은 KSC5601-92로 완성형 및 조합형 사용 가능
- CP949(Code Page) → MS949
- 마이크로소프트에서 사용하는 한글문자의 부호표
- IBM에서 최초 고안했으나 MS-window에서 한글 표현 위해 채택
- Unicode
- 유니코드에 KSC5601 문자집합 포함되어 있음
- 4byte의 유니코드의 어느 범주에 속하는지 & 어떤 변환식을 사용하는지에 따라 부호의 값이 달라진다
→ KSC5601을 그대로 사용하는 euc-kr(CP949)와 유니코드는 서로 호환X - 기타 자료
- 논리 자료 //boolean
- 참/거짓을 표현
- 서로 다른 두 가지 상태 구분 위해 최소 기억 단위인 1bit에서 가능
- 실제로 컴퓨터 응용에서는 byte나 word로 참/거짓 표현
ex. C언어서 1 = true / 0 = false - 포인터 자료
- 컴퓨터의 주기억 공간은 연속적인 주소로 기억공간 내의 위치를 나타낸다
→ byte, word 등의 단위로 주소 지정 가능
ex. byte 단위로 주소 지정 → 기억장소는 처음부터 1byte마다 연속된 주소 부여 - 포인터 = 주소(번지)
→ 포인터 자료 = 기억공간의 위치를 나타내는 주소를 값으로 갖는 자료 객체
→ 이들 주소는 고정된 크기의 비트로 표현 가능 - 포인터가 어떤 주소 값을 가질 때는 그 주소에 수록된 자료를 “가리킨다”라고 말함
→ 포인터가 가리키는 대상이 없으면 nil 또는 null pointer - 그레이 코드(gray code)
- 사칙연산에는 부적당
- 아날로그/디지털(A/D) 변환기나 입출력 코드로 사용
- 배타적 논리합(Exclusive-OR, XOR)의 원리 이용
- 변환 방법
- 사용례
- 패리티 비트(parity bit)
- 개요
- 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가된 비트.
- 비트 중 1의 총 개수를 짝수(even) 또는 홀수(odd)로 유지하며 오류를 검출
- 2비트 이상의 오류는 검출할 수 없다.
- 에러 교정 기능 없다.
- 병렬 패리티
- 가로와 세로 데이터들에 패리티를 적용하여 에러 위치 검출하여 정정 가능
- 데이터 전송 시스템에서의 패리티 비트 사용례
- 에러 검출 위해 송신측에 패리티 발생기, 수신측에 패리티 검출기 구성하여 그 출력을 보고 에러 발생 여부 판단
- ex.
- 해밍코드(hamming code) = 에러 정정 코드
- 개요
- 오류를 검출하고 교정할 목적으로 비트 추가
- 추가적으로 많은 비트가 필요하므로 많은 양의 데이터 전달 필요
- 해밍 코드에서는 짝수 패리티 사용
- 추가되는 패리티 비트 수 2^p >= d +p +1
- p = 패리티 비트 수
- d = 데이터 비트 수
- 8비트 데이터의 에러 정정 코드
- P1 = D3 D5 D7 D9 D11
→ 0 0 0 1 1 = 0 - P2 = D3 D6 D7 D10 D11
→ 0 1 0 1 1 = 1 - P4 = D5 D6 D7 D12
→ 0 1 0 0 = 1 - P8 = D9 D10 D11 D12
→ 1 1 1 0 = 1 - 해밍코드에서 패리티 비트 생성 과정
- 해밍코드에서 패리티 비트 검사 과정
- P1 = P1 D3 D5 D7 D9 D11
→ 0 0 1 0 1 1 = 1 - P2 = P2 D3 D6 D7 D10 D11
→ 1 0 1 0 1 1 = 0 - P4 = P4 D5 D6 D7 D12
→ 1 1 1 0 0 = 1 - P8 = P8 D9 D10 D11 D12
→ 1 1 1 1 0 = 0 - 모든 패리티 = 0 → 에러 없음
그렇지 않으면 에러 발생 - 검사된 패리티를 P8P4P2P1 순서대로 정렬 = 0101 = 5
→ 수신된 데이터 01011101110에서 앞에서 다섯 번째 비트에서 에러 발생
→ D5에 에러 발생 - 진법 변환
- 각 진법의 수체계
- 10진법 → 0, 1, 2, … , 9로 표현되는 10의 digit로 숫자 표현
- 2진법 → 0, 1 로 표현되는 2개의 digit로 숫자 표현
- 8진법 → 0, 1, 2, … , 7로 표현되는 8개의 digit로 숫자 표현
- 16진법 → 0, 1, 2, … , 9, A, B, C, D, E, F로 표현되는 16개의 digit로 숫자 표현
- 8진법과 16진법이 필요한 이유
- 10진수 → 2진수: 나눗셈 사용
2진수 → 10진수: 곱셈 사용 - 2보다 8 또는 16이 나누거나 곱하는 횟수가 줄어 변환시간 단축
- 10진수 → 2진수, 8진수, 16진수 //정수 및 소수
- 2진수, 8진수, 16진수 → 10진수
- 해당 진수의 전개식을 사용하여 자릿값을 곱하여 개산
- 2진수, 8진수, 16진수 상호 변환
2. 자료의 종류와 표현
피드 구독하기:
댓글 (Atom)
-
자료 종류와 표현 자료의 표현 수치 자료 정수 표현(고정소수점 수의 표현) 10진 연산 팩(packed) 연산 언팩(unpacked) 연산 2진 연산 부호화 크기 1의 보수 2의 보...
-
a. 정의 i. 데이터 타입을 추상적*(수학적)으로 정의한 것 1) 추상 = 어떤 물체나 현상의 중요한 특징만을 추출하여 표현하는 것 2) 가장 중요한 추상의 타입 i) 부분으로 나누기( Has-A abstraction) → 요소(c...
-
//코드 참조 사이트: http://javannspring.tistory.com/174 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
댓글 없음:
댓글 쓰기