Logicky Blog

Logickyの開発ブログです

C++ 整数の型

C++の整数の型

参考:【C言語/C++】データ型のサイズ・範囲の一覧【32bit/64bit環境】 | MaryCore

  • short型が、16bit
  • int型が、32bit
  • long型が、32bitか64bit
  • long long型が、64bit

long型は、パソコンの環境によって、変わってしまうらしいので、確実に64bitの大きさが必要ならlong long型にする必要があるらしい。

何bitで最大いくつまで表せるか

  • 1bitは0か1を表せます。
  • x bitは、2のx乗 - 1を表せます。
  • 符号ありの場合、符号で1bit使うので、2のx-1乗 - 1を表せます。
#include <bits/stdc++.h>
using namespace std;
using ULL = unsigned long long;

int main() {
  vector<int> n = {2, 3, 8, 16, 32, 64};
  for (int x : n) {
    ULL maxSign = pow(2, x - 2);
    maxSign = maxSign - 1 + maxSign;
    ULL maxUnSign = pow(2, x - 1);
    maxUnSign = maxUnSign - 1 + maxUnSign;
    cout << x << "bit(符号あり)で表せる最大数: " << maxSign << endl;
    cout << x << "bit(符号なし)で表せる最大数: " << maxUnSign << endl;
    cout << "----------" << endl;
  }
}
2bit(符号あり)で表せる最大数: 1
2bit(符号なし)で表せる最大数: 3
----------
3bit(符号あり)で表せる最大数: 3
3bit(符号なし)で表せる最大数: 7
----------
8bit(符号あり)で表せる最大数: 127
8bit(符号なし)で表せる最大数: 255
----------
16bit(符号あり)で表せる最大数: 32767
16bit(符号なし)で表せる最大数: 65535
----------
32bit(符号あり)で表せる最大数: 2147483647
32bit(符号なし)で表せる最大数: 4294967295
----------
64bit(符号あり)で表せる最大数: 9223372036854775807
64bit(符号なし)で表せる最大数: 18446744073709551615
----------

何bitで10の何乗まで表せるか

  • 16bitは、符号ありなし問わず最大5桁なので、10の4乗までOK。
    • 5乗になったら、32bitにしないといけない。
  • 32bitは、符号ありなし問わず最大10桁なので、10の9乗までOK。
    • 10乗になったら、64bitにしないといけない。
  • 64bitは、符号ありで最大19桁なので、10の18乗までOK。
    • 符号なしは最大20桁なので、10の19乗までOK。