본문 바로가기

c++

1일차(2023/02/14)-자료형

참고 영상: 어소트락 게임아카데이 c++ 무료강의 https://youtu.be/tRIOg6pox9U

변수를 선언하려면 앞에 자료형을 지정해주어야 한다.

//value; (x)
//int value; (o)

자료형마다 차지하는 메모리 byte의 크기가 다르기 때문에,

내가 사용할 변수의 표현 범위가 이정도면 충분하겠다 싶은 것으로 자료형을 선택해주어야 한다.

 

*정수형: char(1byte), short(4byte), int(4byte), long(4byte), long long(8byte)

*실수형: float(4byte), duble(8byte)

 

1byte = 8bit 로 이루어져있다. 각 bit는 0, 1을 저장한다. 

0 1 1 1 1 1 1 1

위와 같이 0과 1이 bit 한 칸마다 저장되므로, 1byte는 2^8=256가지의 가지수를 표현할 수 있다.

 

case 1) 양의 범위만 표현할 수 있는 정수형 변수

음의 범위를 포함하지 않는 자료형 앞에는 unsigned를 붙여준다.

ex) unsigned int value;

0~255 범위의 정수를 표현할 수 있다. 

이 범위를 벗어나게되면 오버플로우(overflow) 혹은 언더플로우(underflow)가 발생한다. 

int main(){

//unsigned int의 표현 범위 : 0~255
unsigned int num = -1; //언더플로우 발생
unsigned int num = 256;//오버플로우 발생

return 0;
}

case 2) 양, 음의 범위 모두 표현하는 정수형 변수

자료형 앞에 unsigned를 붙이지 않으면 양, 음의 부호를 모두 표현하는 변수이다.

ex )int value;

가짓수가 256가지인 것은 동일하므로, -128~-1(음의 범위, 128가지), 0~127(양의 범위, 128가지)

즉, -128~127범위의 수를 표현할 수 있다.

이 또한 범위를 벗어나게되면 오버플로우(overflow) 혹은 언더플로우(underflow)가 발생한다. 

 

//언더플로우, 오버플로우 관련해서는 나중에 따로 정리해야쥐

int main(){

//signed int의 표현 범위 : -128~127
signed int num = -129; //언더플로우 발생
signed int num = 128; //오버플로우 발생

//여기서 signed int 는 int와 같음. 보통 signed를 쓰지 않고 생략한다.
return 0;
}

 

 

##공부 범위 요약 코드##

int main()
{
    
    //자료형 선택하는 이유: 내가 쓸 변수의 표현 범위가 이정도면 충분하겠다 싶은 것으로 선택

    int i = 0;//정수형 변수 i는 정수를 표현하는데 쓰이겠구나
    //int: 자료형(역할마다 이름이 정해져있음), 메모리 공간에 이름 부여, 실체가 없음.
    // 정수형(byte): char(1), short(2), int(4), long(4), long long(8)  ex)1,100,1000, ..
    // 실수형(byte): float(4), double(8)  ex)3.141592...
    
    //i: 변수명(사용자 임의대로 설정)

    unsigned char c; //unsigned : 양수 범위만 취급할 것이다, 11111111(2)=255(10)

    c=0;//1byte 양의 정수만 표현 가능한 변수, 0~255
    c = 255;
    c = 256;//범위 초과, overflow 발생
    c = -1; //범위 초과, underflow 발생

    //양수에 대응하는 음수 빨리 찾는 법: 2의 보수법 -> 양수 비트 반전시킨 다음 1 더하기


    signed char d;//1vyte 양, 음의 정수 표현 가능, -128~127, 11111111(2) =-1(10) 
    //8bit중 가장 첫번째 칸 bit 는 부호비트.
    return 0;
}
//unsigned vs signed char-> 11111111을 각각 255, -1로 다르게 받아들임 
//signed일때만 최상위 비트가 부호비트 역할을 하기 때문이다.

//8bit = 1byte
//1024 byte=1KB->MB->GB->TB(앞 단위의 2^10배 만큼 증가)
//1bit-> 0과 1 표현 가능     즉, 가능한 경우의 수 = 2^(bit 수), 1byte의 경우의 수=2^8=256

//256가지로 표현할 수 있는 수의 범위
//양수 범위만 취급: 0~255까지 표

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

2일차(2023/02/18)-연산자  (0) 2023.02.18