데이터 표현 / 진법
💻 데이터 표현 - 비트 패턴
-
하나의 컴퓨터에서 모든 유형의 데이터를 처리하기 위해서는 데이터의 형태에 무관하게 표현하는 방식이 필요 > 비트 패턴
-
컴퓨터 외부의 모든 데이터는 기계가 이해하고 다룰 수 있는 비트 패턴으로 변환되어 컴퓨터 메모리에 저장, 처리된 후 사용자에게 보여 줄 형태로 다시 변환되어 출력됨
-
메모리는 데이터를 저장하는 기능만을 담당하기 때문에 비트 패턴으로 저장된 데이터가 어떤 유형의 데이터인지알 수 없음 > 입출력장치나 프로그램이 비트 패턴을 데이터 유형에 맞게 해석하고 처리
-
전기적 신호가 있으면 1, 없으면 0. 단순히 전기가 있다/없다만 표시
💻 진법
-
수를 세는 방법 또는 단위를 의미하며, r진법은 0 … (r-1) 까지 r개의 숫자를 사용해 수를 표현
-
컴퓨터에서 수는 2진 시스템을 이용해 표현
-
2진수 -> 10진수
-
0 또는 1을 갖는 각 비트의 값과 위치에 따른 가중치 곱하고, 이 값들을 모두 더하기
-
ex) 2n, (1/2)n, …
-
-
10진수 -> r진수
-
정수 부분과 소수 부분을 구분해 각각을 별도의 방법으로 처리한 후 그 결과를 연결해 나열
-
ex) 정수부분 > 60%2 ..%2 ..%2 … > 나머지만 취하기 / 소수부분 > *2 .. > 정수부분만 취하기 (소수 부분 0일 떄까지)
-
-
2진수 -> r진수
-
2진수 표현에서 소수점을 기준으로 오/왼 양방향으로 묶기
-
세 자리 = 8진수 한 자릿수 / 네 자리 = 16진수 한 자릿수
-
양쪽 끝의 빈 자리는 0으로 채우기
-
-
r진수 -> 2진수
- 각 자릿수를 8진수는 2진수의 세 자리, 16진수는 네 자리로 대응시켜 풀어서 표현
💻 정수 표현
-
부호(+, -) 없는 정수
-
부호를 표시하는 비트가 존재하지 않기 때문에 음의 정수 표현 불가능
-
n비트가 할당된 부호 없는 정수의 범위 : 0 ~ 2n-1 (ex: 8비트 > 0~255, 256개)
-
부호 없는 정수로 표현하는 방법 : 주어진 수를 2진수로 변환 -> 변환된 2진수를 할당된 n비트에 채우기
-
할당된 비트의 개수보다 변환된 2진수의 비트의 개수가 많다면 => overflow
-
-
부호 있는 정수
-
할당된 n비트 중에서 최상위 1비트는 부호 비트로 사용, 나머지 비트는 주어진 정수의 크기를 나타내는 데 사용
-
부호 비트가 0이면 양의 정수, 1이면 음의 정수
-
부호화 크기 방식, 1의 보수 방식, 2의 보수 방식
-
부호화-크기 방식
-
주어진 음의 정수에 대해 절대값을 취해서 표현 > 부호 비트를 제외하고 양/음의 정수 모두 동일한 형태로 표현
-
부호화-크기 방식에서 n비트로 표현할 수 있는 수의 범위 : -2n-1-1 ~ +2n-1-1
-
10000000(8비트)와 같이 -0 존재 > 2개의 0 (+0, -0)이 존재하는 문제점
-
-
1의 보수 방식
- 양의 정수에 대한 보수로서 음의 정수를 표현 (1->0, 0->1로 바꿔서 표현)
-
표현할 수 있는 수의 범위 : -2n-1-1 ~ +2n-1-1
- +0(00000000), -0(11111111) 두 개의 0을 표현할 수 있다는 문제점 존재
-
2의 보수 방식
-
1의 보수 방식으로 계산한 결과에 1을 더해서 표현
-
부호화-크기 방식, 1의 보수 방식과는 달리 하나의 0만 존재
-
표현 가능한 수의 범위 : -2n-1 ~ +2n-1-1 (-0이 없기 때문에 음수 하나 더 표현 가능)
-
하나의 0만 존재하고, 산술연산을 다른 방식에 비해 간단히 할 수 있기 때문에 컴퓨터에서는 정수 표현을 위해 일반적으로 2의 보수 방식을 사용
-
-
-
💻 실수 표현
컴퓨터가 소수를 표현하기 위한 연산에는 오차가 존재(무한소수) > 오차를 최소화 하기 위한 두 가지 방식 존재 : 고정 소수점 방식 / 부동 소수점 방식
-
고정 소수점 방식
-
소수점의 위치가 고정되어 있는 상태 > 역할(부호/정수부/소수부)에 따른 비트의 범위가 고정되어있음
-
제한된 비트 환경에서 실수를 표현하기에 적합하고, 표현 가능한 수의 범위가 고정되어있어 연산 속도가 빠르나, 표현할 수 있는 수의 범위가 한정적이고 연산의 정확도가 떨어진다는 단점이 존재 > 부동소수점 방식 사용
-
-
부동소수점 방식
-
부동소수점 : 소수점의 위치가 고정되어있지 않음 > 실수 표현을 위해 정규형 사용
-
(-1)S * M * BE 와 같이 유효숫자를 사용한 곱셈 형태의 과학적 표기법을 바탕으로 수를 표현
-
S = 주어진 수가 0부다 큰지 or 작은지를 나타내는 부호
-
M = 가수, B = 기저, E = 지수
-
컴퓨터의 기본 진법은 2진법 > 기저는 2로 고정
-
부호는 가수 부분을 통해 0 또는 1을 사용해 표현, 1비트로 구성
-
가수는 부호를 제외한 부분은 2진수 형태로 변환하여 저장
-
지수는 양수 또는 음수가 될 수 있어서 부호 필요 > 부호 비트를 별도로 사용하지 않고, 초과표기법을 사용해 표현
-
초과표기법
-
부호비트를 별도로 사용하지 않고 부호와 함께 값 표현 가능
-
부동소수점 방식의 지수 부분을 표현하기 위해서만 사용되는 표현 방법
-
지수값 표현을 위해 n비트 할담 > 2^n-1 / 2^(n-1)-1 두 개 의 숫자를 매직 넘버로 지정
-
주어진 지수에 매직넘버를 더하고 그 결과를 2진수로 변환해 지수 부분에 채워놓는다. / 반대로 2진수로부터 지수값을 얻어 내려면 2진수로 표현된 지수를 10진수로 바꾸고 매직넘버를 뺀다.
-
하나의 실수에서 소수점의 위치가 이동되면 다양한 형태로 표현될 수 있기 때문에 가수를 표현하기 위해서는 표준화된 형식이 필요 > 소수점 왼쪽에 오직 하나의 1만 존재할 수 있도록 소수점의 위치를 조정하는 정규화(normalization) 과정을 거친 후에 가수를 저장
-
소수점이 왼쪽 또는 오른쪽으로 이동하는 만큼 지수의 값을 증가 또는 감소시킴
-
-
-
💻 문자 표현
-
ASCII
-
Unicode : 16비트 코드 체계, 사용중인 플랫폼, 프로그램, 언어에 무관