Major Study./Computer Science

number system, Data storage

sosal 2014. 7. 17. 16:16
반응형

/*

 * http://sosal.kr/

 * made by so_Sal

 */


Foundation of computer science 2~3장을 리뷰하고있습니다. ㅎㅎㅎ

컴퓨터의 수체계에 대해서 설명하나보네요.
컴퓨터는 on off, 딱 2가지의 경우가 있죠?
이를 수로 나타낸게 2진수로, 010101101010 뭐 이런식 -.-ㅋ;

2진수, 8진수, 10진수, 16진수를 흔히 볼 수 있죠 ㅎㅎ
자세한 사항은 생략~!

0과 1을 bit라고 합니다. 이를 수로 나타낸게 (2진법) bit pattern~!

즉, 1bit : 2가지 경우의 수
4bit : 16가지 경우의 수
8bit : 256가지 경우의 수

8비트를 1바이트로 표현

1byte = 256가지 경우의수
1000 byte = 1 kb.
1000kb = 1 mb
1000mb = 1 gb....
... 생략~

단순 8바이트로는 양수밖에 표현하지 못하죠
그래서, 맨 첫번째 비트를 음수로 표현하자는 방법이 나왔습니다.
1000 0001 = -1
0000 0001 = 1
좋은방법이지만, -0과 0은 같은숫자인데 중복이 됩니다.
덧셈 뺄샘 연산도 그닥 좋아보이지가 않네요

그래서 만든게 2의 보수!!

일단 0000 0000 ~ 0111 1111 은 (0~127) 당연히 모두 양수로 두는데,
마이너스인 값이 덧셈이 되도 뺄샘연산이 된것처럼 하게 하기 위해서 만든게 2의 보수!

0111 1111 과 (127) 어떤수를 빼야 0이 될까요? -127이죠.
그렇다면 -127은 1000 0001 이렇게 생겼겠네요. (overflow)

0000 00001 과 1111 1111 을 더해야 0이 되니까
즉 1111 1111은 -1이 되겠네요.
즉 1 0000 0000 에서 x를 뺀 값이 -x라는 뜻! ㅎㅎ

이렇게해서 2의 보수도 쉽게 정리되었;;;;습니다.
뭐 단순 리뷰니까요~ ^^, 특히 오버플로우 개념에 대해선 숙지하셔야..
(two's complement representation : 2의 보수 표현법)


그럼, 정수는 이렇게 쉽게 표현할 수 있는데..
소수 (예를들면 float, double)은 어떻게 표현할 수 있을까?? (물론 근사값이죠? ㅎㅎ)

IEEE standards : IEEE has defined several standards for stroing floating-point number.
float-point 자료형의 저장방식을 뭐 정의했다고 하네요..


4바이트 (32bit) float 자료형의 구조입니다.
         byte :     1           8               23
excess_127 [sign] [exponent] [Mantissa]

sign 비트가 1이면 음수, 0이면 양수겠죠?
exponent는 지수입니다. 자릿수를 나타내겠죠.
Mantissa는 가수.. 라고 하는데, 뭐 자릿수의 근사값이라 생각하면 되겠습니다 ㅎㅎ
excess 127의 뜻은 exponent가 127일떄 첫째자리라는 뜻입니다.
(exponent : 127 : 0111 1111)

127은 0 ~ 255 까지 표현 가능한 지수를 절반에 해당하는 수로
지수값의 절반을 양의 지수로 절반의 음의 지수로 사용하고자 절반에
해당하는 127을 bias로 설정한 것입니다.

8바이트 (64bit) double 자료형의 구조입니다.
          byte :      1           11               52
exxcess_1023 [sign] [exponent] [Mantissa]
(exponent : 1023 : 011 1111 1111)