티스토리 뷰

변수타입(자료형)이란 것은 사람이 편의에 의해 만들어낸 추상개념입니다.
실제로 컴퓨터에 존재하는 것은 단지 0과 1로 이루어진 2진수 뿐이죠.


사람들이 2진수에 자료형을 부여함으로써 어느 만큼의 2진수 묶음을 어떻게 해석할 것인가? 라는 기준을 정하게 됩니다.


32비트 컴파일러를 기준으로 봤을때


char 형은 2진수 8개( = 8비트 = 1바이트)를 한묶음으로 정의된 문자표(ASCII표)에 대응하여
특정 문자로써의 의미를 가집니다.


int 형은 2진수 32개( = 32비트 = 4바이트)를 한묶음으로 십진수 정수로써의 의미를 가집니다.

0 ~ 1111 1111 1111 1111 1111 1111 1111 1111 (2진수)
0 ~ FFFFFFFF (16진수)
0 ~ 4294967295 (10진수)


같은 범위를 표현 해낼수 있게됩니다.


그럼 음수는 어떻게 표현할까요?


음수를 표현하는 방법은 두가지가 있습니다.


한가지는 첫번째 비트(MSB)를 부호를 결정하는 비트로 두고 나머지는 값을 표현하는 방식(부호절대값 방식)입니다.

십진수 -100(-0x64) 을 1000 0000 0000 0000 0000 0000 0110 0100 로 표현하죠.


현재는 정수를 표현할 때 아래와 같이 이진수 값을 해석하는 2에 대한 보수(2's complement) 라는 방식을 사용합니다.




2에 대한 보수의 장점은


1) 부호 절대값 방식은 덧셈과 뺄셈이 서로 다른 방식으로 연산됩니다. 그래서 CPU에 각각에 대한
연산기가 있어야 합니다만 2에 대한 보수는 A - B 일 경우 B의 2에 대한 보수를 취해서 A와 더해버리면 되기 때문에 덧셈 연산기만으로 뺄셈까지 할 수 있게 되어서 논리회로가 훨씬 단순해집니다. 2에 대한 보수를 얻어내는 방식 또한 매우 간단하죠. B를 반전시킨 다음  1을 더하기만 하면 됩니다.


2) 부호 절대값 방식과 달리 -0 이 생기지 않아서 음수를 하나 더 표현할 수 있습니다.


3) 첫번째 비트(MSB)만 보면 양수인지 음수인지 판단할 수 있습니다.




부호 절대값 방식은 실수(IEEE 754 부동소수점 표기법)를 표현할 때 사용됩니다.

댓글
안내
궁금한 점을 댓글로 남겨주시면 답변해 드립니다.