どうもみなさんこんばんは、流れ星につい四回願い事をしてしまったせいで逆に叶わなかったさいほうへいきです!
今回はなかば個人用も兼ねているのですが、複数の整数型で扱うことのできる最大値、ケタ数をご紹介していきます。
まぁなんかけっこう専門的な話になるのでなに言ってるかわからんって人も多いと思いますが、あんまり気にしなくて大丈夫です。
プログラミング以外だと……なんか小説とかで使えるんじゃないかな。というかもともと個人用な小説のために書いた記事だし。
では、よろしくお願いします。
符号あり整数型
符号ありっていうのはそのまんまプラマイどちらも扱えますよってことですね。
ここでの型名はC#をベースにしていますが、言語ごとに異なる場合もあります。たとえばC++だとsbyteじゃなくてcharだったりね。
なお十六進での最大値は当たり前ですが0xFFFFとかになるので書いてません。
十六進のケタ数もわかるだろって? 気にするな
あとは、デカすぎる数字は近似値にしてます。必要なら自前で計算してどうぞ。
| ビット | 型名 | 扱える最大値 | ケタ数(十進) | ケタ数(十六進) |
|---|---|---|---|---|
| 8 | sbyte | 127 | 3 | 2 |
| 16 | short | 32,767 | 5 | 4 |
| 32 | int | 2,147,483,647 | 10 | 8 |
| 64 | long | 9,223,372,036,854,775,807 | 19 | 16 |
| 128 | Int128 | 1.70×1038 | 39 | 32 |
| 256 | 5.79×1076 | 77 | 64 | |
| 512 | 6.70×10153 | 154 | 128 | |
| 1024 | 8.99×10307 | 308 | 256 | |
| 2048 | 1.62×10616 | 617 | 512 | |
| 4096 | 5.22×101232 | 1233 | 1024 | |
| 8192 | 5.45×102465 | 2466 | 2048 |
符号なし整数型
符号なしというのは、マイナスの数を扱えないということです。
パソコン初心者のかたからするとなんでわざわざそんなことするの?という感じかもしれませんが、プラスマイナス表現に使っていたビットを数字本体へ回せるため、最大値が実質倍になるというメリットがあります。
実際、マイナスになることがないであろう回数カウンターなどではこちらのほうが有利です。
| ビット | 型名 | 扱える最大値 | ケタ数(十進) | ケタ数(十六進) |
|---|---|---|---|---|
| 8 | byte | 255 | 3 | 2 |
| 16 | ushort | 65,535 | 5 | 4 |
| 32 | uint | 4,294,967,295 | 10 | 8 |
| 64 | ulong | 18,446,744,073,709,551,615 | 20 | 16 |
| 128 | UInt128 | 3.40×1038 | 39 | 32 |
| 256 | 1.15×1077 | 78 | 64 | |
| 512 | 1.34×10154 | 155 | 128 | |
| 1024 | 1.79×10308 | 309 | 256 | |
| 2048 | 3.23×10616 | 617 | 512 | |
| 4096 | 1.04×101233 | 1234 | 1024 | |
| 8192 | 1.09×102466 | 2467 | 2048 |
公式
ここでは普通用いられるオクテットビットの整数型しか紹介していませんが、もしも13とか24862みたいなビット数が必要な場合は、次の式からそれぞれを求めることが可能です。
なお、ここではビット数をnと置きます。
最大値
各ビットでの最大値は、以下の公式により算出されます。
符号ありの場合:
\( 2^{n-1} – 1 \)
符号なしの場合:
\( 2^{n} – 1 \)
十進法でのケタ数
符号ありの場合:
\( \lfloor (n-1) \times \log_{10}(2) \rfloor + 1 \)
符号なしの場合:
\( \lfloor n \times \log_{10}(2) \rfloor + 1 \)
十六進法でのケタ数
符号ありの場合:
\( \lceil \frac{n-1}{4} \rceil \)
符号なしの場合:
\( \lceil \frac{n}{4} \rceil \)
ちなみにカギカッコみたいな謎の記号ついては、床関数・天井関数と調べるとでてくると思います。
要するに切り捨て・切り上げですね。
まとめ
というわけで、今回は各ビット数においての最大値とケタ数、それから求める式を紹介しました!
すごく久々にマトモな記事を書いた気がします。もうちょっと頻度増やしたいんだけども……。
では、今回はここまで!
ありがとうございました。




コメント