본문 바로가기
C │ C++ │ C#/C++

C++ Chapter 2.2 : 정수형((Integer)), 고정 너비 정수

by Pokaa 2023. 8. 13.
728x90
728x90
SMALL

Chapter2. 변수와 기본 자료형

 

정수형 Integer

 

  •  int i  = 1
    ο 32 bits
        ■ 00000000 00000000 00000000 00000001
            ■ 맨 앞 0은 sign 부호 비트
  •  signed short 
    16 bits
        ■ 범위
    \[[{-2}^{15} , 2^{15}-1]\]
        ■ 개수
    \[2^{16}개\]
  •  unsigned short 
    ο 16 bits
        ■ 범위
    \[[0 , 2^{16}-1]\]
        ■ 개수
    \[2^{16}개\]
  • overflow, underflow가 발생하면 각 타입의 범위 내에서 순환한다.
    ο ex) 2$^15$ 를 signed short에 넣으면 범위 밖이니 순환되어 오히려 $($ - 2$^1$$^5$ $)$ 가 저장 됨.
    ο 단,  unsigned  에 음수를 넣으면 순환되는게 아닌 오히려 이상한 값으로 저장된다.
        ■ ex) unsigned short 타입에 음수 -1 를 넣으면 순환된 $($ 2$^1$$^6$ - 1 $)$ 이 아닌 이상한 값 나옴
        ■ unsigned에 음수 넣지 말자~
           형변환
  • int i = 22/4
    ο i에는 5가 들어간다. 소수점 뒷자리를 자르고 정수로.
        ■ 몫만 들어가게 되는 형태
  • 22/4.0
    ο 5.0 의 실수형태로 들어감

고정 너비 정수

 

  • #include <cstdint>
  • C++11 부터 사용 가능
std::int16_t i(5);

 

  •  int16_t 
    ο 5값으로 초기화 된 i 의 데이터 타입을 16bits, 즉 2 byte 데이터 타입의 int 로 바꿔준다.
std::int8_t myint = 65;
cout << myint << endl;  // 'A' 문자가 출력된다.
  •  int8_t 
    ο 65값으로 초기화 된 myint의 데이터 타입을 8bits, 즉 1byte 데이터 타입의 int로 바꿔준다.
        ■ 8bit 짜리 int는 char이다. signed char
        ■ myint를 출력하면 ‘A’가 출력됨
std::int_fast8_t fi(5);

 

  •  int_fast8_t 
    ο 5값으로 초기화 된 fi 의 데이터 타입을 8 bit 중 가장 빠른 데이터 타입으로 바꿔준다.
std::int_least64_t fl(5);

 

  •  int_least64_t 
    ο 5값으로 초기화 된 fl 의 데이터 타입을 적어도 64 bit를 갖는 데이터 타입으로 바꿔준다.
728x90
300x250
LIST