본문 바로가기
C++

3. 정수형 자료형

by arirang_ 2023. 1. 4.
//1바이트로 양수만 표현
//256가지의 표현 가지 수가 나오며, 0 ~ 255까지 가능
unsigned char c = 0;
c = 0;
c = 255;        

//1바이트로 양수, 음수 둘 다 표현
//signed는 생략이 가능하다
//양수와 음수 둘 다 표현이 가능하기 때문에 범위는 256에서 절반씩 줄어든다고 생각하면 된다.
// -128 ~ 0 ~ 127
char c1 = 0;
c1 = 255;

● signed : 음수, 양수 둘 다 가능

● unsigned : 양수만 가능

 

0              

양수

1              

음수

이 부분을 MSB ( Most significant bit - 가장 중요한 비트, 음수/양수 판별하는 최상위 비트) 라고 한다.

 


그럼 컴퓨터에서 음수의 계산은 어떻게 할까?

0 0 0 0 0 0 0 1

위의 비트가 1을 의미한다면, -1은

1 0 0 0 0 0 0 1

이것일까? 

아니다.

-1을 찾기 위해서는 1과 더했을 때 0 이 나오게 하는 것을 찾으면 된다. 

즉, 뺄셈을 음수의 덧셈으로 생각해보면 된다. 

5 + ( -5 ) = 0

7 + ( -7 ) = 0 

이런식으로!

 

응용해보면, 

1) 

0 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1

+

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

0 0 0 0 0 0 0 0

해석) 

01111111과 더했을 때 0이 되도록 하는 것은 10000001이다.

따라서 01111111이 '127' 이니까 10000001은 '-127'을 의미하게 된다.

 

2) 

0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1

+

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

0 0 0 0 0 0 0 0

해석) 

00000001 과 더했을 때 0이 되도록 하는 것은 11111111이다.

따라서 00000001이 '1' 이니까 11111111은 '-1'을 의미하게 된다.

 

그럼 아래 코드를 보자.

unsigned char c = 0;
c = 0;
c = 255;        

// -128 ~ 0 ~ 127
char c1 = 0;
c1 = 255;

c의 '255'를 넣으면 컴퓨터는 어떻게 받아들일까?  

c는 양수만 표현이 가능하기 때문에 컴퓨터가 255로 받아들이는 반면, c1은 음수까지 값이 가능하므로 컴퓨터에서는 '-1'로 받아들인다.

c의 상태도 다음과 같은 비트 상태이고,

1 1 1 1 1 1 1 1

c1의 상태도 다음과 같은 비트 상태이다.

1 1 1 1 1 1 1 1

c에 채워져 있는 비트 상태와 c1에 채워져 있는 비트 상태가 같다.

즉 둘의 메모리 비트 값은 동일한 상태이다 (똑같은 상태)

하지만,

동일한 메모리 공간에 동일한 값이 채워져 있더라도 "컴퓨터가 어떻게 해석하느냐"에 따라 컴퓨터에 받아들여지는 값이 다를 수 있다

정리하면,

컴퓨터가 어떤 관점으로 보냐에 따라 해석이 달라질 수 있다는 것이다. (해석의 차이. 같은 대상에 대해서 해석이 다름.)

//1바이트로 양수만 표현
//256가지의 표현 가지 수가 나오며, 0 ~ 255까지 가능
unsigned char c = 0;
c = 0;
c = 255;        //컴퓨터는 '255'로 받아들인다.

//1바이트로 양수, 음수 둘 다 표현
//signed는 생략이 가능하다
//양수와 음수 둘 다 표현이 가능하기 때문에 범위는 256에서 절반씩 줄어든다고 생각하면 된다, 
// -128 ~ 0 ~ 127
char c1 = 0;
c1 = 255;       //컴퓨터는 '-1'로 받아들인다.

음수를 빨리 찾는 방법 (2의 보수)

1) 양수 비트를 반전 시키고,

2) 1을 더한다. 

 

예시) 

2

0 0 0 0 0 0 1 0

2를 가지고 -2를 찾아보면

(1) 양수 비트 반전 -

1 1 1 1 1 1 0 1

(2) 1 더하기

1 1 1 1 1 1 1 0

이것이 ' -2 ' 이다.

 


크기

1byte = 8bit로 256가지의 경우를 표현할 수 있다.

2byte= 16bit로 6만..이상 가지의 경우를 표현할 수 있다.

...

4byte = 32bit로 42억 가짓 수의 경우를 표현할 수 있다.

-------------------------------------------------------------------------따라서 표현하고자 하는 대상에 대한 적절한 크기의 자료형을 선택하면 된다.

 

 

'C++' 카테고리의 다른 글

6. 증감 연산자  (0) 2023.01.06
5. 산술 연산자  (1) 2023.01.04
4. 실수형 자료형  (0) 2023.01.04
2. 자료형  (0) 2023.01.02
1. 주석  (0) 2023.01.02