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。