본문 바로가기

FALL in/G.MA' s 자료구조

1.자료구조의 개요(2) - 자료의 표현



컴퓨더 내부에서 자료를 표현하는 방법




수치자료의 표현 

- 10진수의 표현 

* 존(Zone) 형식의 표현 


10진수 한자리를 표현하기 위해 1byte(8bits)를 사용한다. 

존영역과 수치영역으로 구분되는데, 존영역에는 부호(음수,양수)와 관련된 정보가 들어가고, 수치영역에는 10진수한자리가 들어간다.

수치영역이 4bits인 이유는 10진수 한자리 즉, 0~9를 표현하기위해 적어도 10개를 구분할수있는 자리가 있어야 하기 때문이다.

3bits는 2^3=8개로 부족하므로 4bits 2^4=16 을 쓴다. 





최하위 존영역(S:sign비트-부호비트)빼고 다른 존영역에는 모두 1111(16진수F)가 들어간다. 

S에는 1100(16진수C)- 양수일때 / 1101(16진수D) - 음수일때

가 들어간다. 

존영역에서 16진수의 A~F를 쓰는이유는 수치영역에서 0~9까지 사용하므로 존영역과 수치영역을 구분하기 쉽도록 하기 위함이다.




*팩(Pack) 형식의 표현



존형식에서 중복되는 존영역(1111) 때문에 생기는 메모리 낭비를 막기위해 최하위 sign비트만 남긴 방식이다.




- 2진수의 정수 표현

* n비트 부호 절댓값 형식

최상위 1비트(부호비트)빼고 나머지 비트에 이진수를 표현하는 방식

ex) 1 0 0 1 0 1 0 1 -------부호비트:1 절대값:21 --> (-21)


문제점: 뺄셈을 할수 없음.


* 1의 보수(1' Complement)형식

음수의 표현에서 부호 비트를 사용하는 대신 1의 보수를 사용하는 방법, 양수의 표현은 부호 절댓값 형식과 동일.

ex) 0 0 0 1 0 1 0 1 ---->(+21)

     1 1 1 0 1 0 1 0 ----->(-21)


문제점: 뺄셈을 할수 없음.


* 2의 보수(2' Complement)형식

뺄셈이 가능하도록 만들어진 방식.

음수의 표현에서 부호 비트르 사용하는 대신 2의 보수를 사용하는 방법.

1의 보수에 1을 더해준다.

ex) 5 - 3

0101 ->(+5)

0011 ->(+3)

1100+0001 = 1101 ->(-3)


0101

   + 1101

--------------

       0010


- 2진수의 실수 표현 

* 고정 소수점 표현

소수점이 항상 왼쪽에 있다고 생각. 

ex) 011 ==> 0.011

단점: 표현범위 작음


* 부동 소수점 형식의 표현 

고정 소수점 형식에 비해 표현 범위가 넓다.

ex) 342 = 0.342 X 10^3 

0.342 : 소수부

10: 밑수

3: 지수

밑수는 항상 10으로 일정하므로 부호, 소수부, 지수만 저장하여 사용한다.



4byte 부동소수점 표시 방식



문자 자료의 표현 

- BCD 코드

6비트를 사용하여 문자를 표현하는 방식. 상위 2비트(존비트), 하위 4비트(2진수 비트)

존비트: 00(0~9), 01(영어대문자 A~I), 10(영어대문자 J~R), 11(영어대문자 S~Z) 


단점: 소문자 표현 불가



- EBCDIC 코드

8비트를 사용하여 문자를 표현하는 방식. 상위 4비트(존비트), 하위 4비트(2진수 비트)




단점: 메모리낭비, 빈자리가 많음



- ASCII 코드

7bits를 사용하여 문자를 표현하는 방식. 상위 3비트(존 비트), 하위 4비트(2진수 비트)

EBCDIC 코드의 빈자리를 없앰으로서 메모리를 최적으로 사용.






논리자료의 표현 

논리값을 표현하기 위한 자료형식.

논리값은 참아니면 거짓. 

프로그램은 0빼고 모두 참으로 인식.



포인터 자료의 표현  

메모리의 주소르 표현하기 위한 자료 형식.

포인터를 저장하기위한 변수의 크기는 모두 int와 같은 4bytes크기이나 주소인지 단순히 데이터인지 구분하기위해 포인터 변수를 사용한다.

int *

char * 

float * 

모두 크기가 4byte이지만 통일해서 쓰지않고 구분해서 쓰는 이유는 

포인터 변수에는 맨 처음 주소만 저장되는데 int, char, float마다 크기가 다르므로 첫주소에서 부터 어디까지 데이터가 있는지 알아야 하기때문이다.



문자열 자료의 표현 

String . 배열을 이용한 표현.

apple이라는 문자열을 배열에 저장했다면, a p p l e \0이 차례대로 들어간다.

문자열의 끝을 알려주는 null문자(\0) 이 들어가야하므로 배열을 한칸더크게 선언해야한다.

배열의 크기는 6이나, 문자열길이(strlen)은 5이다.