ダウンロード sample.zip (727.0 B)
解説:教えて那々子先生
中途半端な数字なのはなぜ?
キーポイントとなるのは2進数です。
よくコンピューターが「0と1だけの世界」と言われるように、コンピューターの内部では、数値データは0と1の羅列で表されます。
その羅列は、整数値であれば、32桁や64桁など、データ型によって決まった長さとなっています。32桁で表された整数を32ビット整数、64桁の場合は64ビット整数と呼ばれます。
例えば、C#ではint(Int32型)やuint(UInt32型)が32ビット整数にあたります。
では、私たちが日常的に用いている1とか2とか3とかの数値を、どうやって0と1だけの羅列に変換するのでしょうか。実は、そこで用いられるのが2進数です。
ここで、10進数と2進数の対応表を見てみましょう。
| 10進数 | 2進数 |
|---|---|
0 |
00000000000000000000000000000000 |
1 |
00000000000000000000000000000001 |
2 |
00000000000000000000000000000010 |
3 |
00000000000000000000000000000011 |
| 略 | 略 |
4294967295 |
11111111111111111111111111111111 |
ここからわかるのは、4294967295という、いかにも中途半端な数値が、2進数になると32桁すべてが綺麗に1になる、つまり、32桁の2進数で表現できる最大値であるということです。
この2進数をそのまま単純にデータとして用いたものを、符号なし32ビット整数と呼びます。符号なしというのは、正負符号がない、プラスの値のみという意味です。
マイナスの整数値は?
では、マイナスの数値をどう表すのでしょうか。
いくつかの方法はありますが、整数の場合、半分の範囲をマイナス値に読み替えるという決まり事を設けるのが一般的です。
具体的には、32ビット整数(0から4294967295まで)の場合、後半の2147483648から4294967295までの範囲の数値を、それぞれ-2147483648から-1までの範囲に読み替えます。
| 10進数 | 2進数 |
|---|---|
0 |
00000000000000000000000000000000 |
1 |
00000000000000000000000000000001 |
2 |
00000000000000000000000000000010 |
3 |
00000000000000000000000000000011 |
| 略 | 略 |
2147483647 |
01111111111111111111111111111111 |
-2147483648 |
10000000000000000000000000000000 |
-2147483647 |
10000000000000000000000000000001 |
| 略 | 略 |
-3 |
11111111111111111111111111111101 |
-2 |
11111111111111111111111111111110 |
-1 |
11111111111111111111111111111111 |
こうすることで、表せる最大値はおよそ半分になってしまいますが、その分だけマイナスの数値も表せるようになります。
このようにマイナスも表せる32ビット整数は、符号付き32ビット整数と呼ばれます。
この記事は参考になりましたか?
- この記事の著者
-
井二 かける(イブタ カケル)
情報処理安全確保支援士、プログラマー、作家。「物語の力でIT・セキュリティをもっと面白く」をモットーに、作家活動、セキュリティ啓発活動を行う。主な作品はアニメ「こうしす!」、小説「こうしす!社内SE祝園アカネの情報セキュリティ事件簿」(翔泳社)、マンガ「伏石ちゃんは意図に反したい ~ハッキングから始まる高校生活~」(京姫鉄道出版)など。 Twitter:@k_ibuta、@kyoki_railway
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山口 しずか(ヤマグチ シズカ)
やりたいことはなんでもやる精神で急成長中の漫画家。2019年よりマンガアプリにて商業連載デビュー。連載の傍ら企業のPR漫画や漫画動画など媒体・ジャンルにとらわれず時代に合わせた漫画を制作中。趣味はお酒と旅行。 Twitter:@shizuckey
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
