자료형은 크게 정수형과 실수형으로 나뉜다.
정수형 자료형
C++에서 정수란 부호를 가지고 있으며, 소수 부분이 없는 수를 의미합니다.
정수형 데이터에 unsigned 키워드를 추가하면, 부호를 나타내는 최상위 비트(MSB, Most Significant Bit)까지도 크기를 나타내는 데 사용할 수 있습니다.
unsigned 정수로는 음의 정수를 표현할 수는 없지만, 0을 포함한 양의 정수는 두 배 더 많이 표현할 수 있게 됩니다.
음의 정수까지도 표현할 수 있는 signed 키워드는 모든 타입에서 기본적으로 생략할 수 있습니다.
* 최상위 비트(MSB, Most Significant Bit)란 1바이트를 구성하는 8개의 비트 중 최고값을 갖는 비트를 의미합니다.
정수형 데이터의 타입을 결정할 때에는 반드시 자신이 사용하고자 하는 데이터의 최대 크기를 고려해야 한다.
타입이 표현할 수 있는 범위를 벗어난 데이터를 저장하면 오버플로우(overflow)가 발생해 전혀 다른 값이 저장될 수 있습니다.
오버플로우(overflow)란 해당 타입이 표현할 수 있는 범위를 넘는 데이터가 저장될 때 발생하는 현상을 가리킵니다.
오버플로우가 발생하면 최상위 비트(MSB)를 벗어난 데이터가 인접 비트를 덮어쓰므로, 잘못된 결과를 얻을 수 있습니다.
바이트 단위
1 byte = 8 bit
1 bit는 더 이상 쪼갤 수 없는 최소 단위이다. 0 또는 1 값을 가진다.
2^10byte = 1024byte = 1KB
2^20byte = 1024KB = 1MB
2^30byte = 1024MB = 1GB
2^40byte = 1024GB = 1TB
1byte로 표현할 수 있는 수의 범위는?
(1) 양수만 취급하는 경우
1byte = 8bit => 2^8의 경우의 수가 나온다 => 총 256가지
--> 0 ~ 255까지 표현이 가능하다.
ii) 음수까지 취급하는 경우
--> -128 ~ 127까지 표현이 가능하다.
컴퓨터가 음수를 다루는 법
컴퓨터는 뺄셈을 음수의 덧셈으로 생각한다.
10 + (-10) = 0
5 + (-5) = 0
이 가능하도록 하는 비트의 상태를 음수로 본다.
[예시1]
0111 1111 (127)
1000 0001 (-127)
0111 1111이 127이기 때문에 1111 1111이 -127이라고 착각하기 쉽다.
하지만, 0111 1111과 더 했을 때 0이 나오는 비트의 상태를 -127로 보기 때문에
-127은 1000 0001이다.
[예시1]
0000 0001 (1)
1111 1111(-1)
음의 정수 찾기(2의 보수법)
=> 대응되는 양수의 부호를 반전 후, 1을 더한다.
0000 0001 -> 1111 1110 + 1 ==> 1111 1111
#include <iostream>
int main()
{
/*
자료형 (크기 단위, byte)
정수형: char(1), short(2), int(4), long(4), long long(8)
실수형: float(4), double(8)
*/
// int: 자료형
// i: 변수
int i = 0;
unsigned char c = 0;
c = 0;
c = 255; // 11111111
// c = 256; // 예외 상황 : 범위를 넘은 경우 100000000 -> 하위 8bit 00000000 = 0
// 1byte로 양수, 음수 둘다 표현
// -128 ~ 0 ~ 127
// 0______ : 양수
// 1______ : 음수
// -> 가장 왼쪽 bit를 MSB(Most Significatn bit)라고 부른다
char c1 = 0;
c1 = -1; // 11111111
c1 = 255; // 11111111
return 0;
}
결론 : unsigned char와 char는 같은 비트가 채워져 있어도 해석하는 방식이 다르기 때문에 255와 -1로 해석한다.
아리송한 데이터의 단위 ‘바이트(Byte)’ – 삼성반도체이야기
괄목할만한 기술 발전으로 과거와는 비교할 수 없을 정도의 많은 데이터에 둘러싸여 살고 있는 지금, 이를 보관할 수 있는 데이터 저장매체의 대중화 역시 빠르게 이뤄지고 있습니다. HDD, SSD, 외
www.samsungsemiconstory.com
'Programming language > C++' 카테고리의 다른 글
[c++] 실수형 자료형 (0) | 2022.07.02 |
---|