C++

[C++] 정수형 자료형

jeylee 2021. 7. 27. 10:55
int main()
{
	// 1 바이트로 양수만 표현
	// 256 가지 -> 0 ~ 255
	unsigned char c = 0;
	c = 0;
	//c = 255;
	c = -1;

	// 1바이트로 양수, 음수 둘다 표현
	// -128 ~ 127
	char c1 = 0;
	c1 = -1;

	// 음의 정수 찾기(2의 보수법)
	// 대응되는 양수의 부호를 반전 후, 1을 더한다.

	return 0;
}

 

1byte의 char를 활용해 오버플로우와 언더플로우를 확인해 보았습니다. 

= 특정 오버된값을 대입하면 그저 아래 8bit만 잘라 읽어 원치 않는 값을 가져다줍니다. 과거의 게임에서 캐릭터의 능력치나 아이템 갯수 에 255가 최대치 였던 이유가 1byte메모리를 사용하기 때문입니다.

 

-1은 1byte에 어떻게 있는가?

=양의 정수와 0이 1byte상에서 어떻게 있느지 알고 있습니다. 그래서 1에서 어떤 값을 더해야 0이 되는지 알고 있기 때문에 이를 연결하여 생각해 보면 됩니다.

 

1 - 1 = 0

1 + (-1) = 0

 

0000 0001 + (-1) = 0000 0000

-1 = 1111 1111

 

단지 0과 1로 데이터를 저장한다는 간단한 내용에서 음수는 메모리상 어떻게 있는지 조금 더 알아 보았습니다.