コンピュータの基本は電気が流れる流れないの0と1の世界です。
0と1だけで表した数値を2進数と言います。通常私達がつかっているのは10進数で、
1 2 3 4 5 6 7 8 9 10
の十個目で二桁になります。2進数の場合は
1 10
と2個目で二桁になります。これらを10進数に割り当てれば数値が扱えることになります。 括弧内は2進数を10進数に変換するための計算式です。2の4乗とは 2×2×2×2→8です。
1 → 1 ( 2の0乗 × 1) 10 → 2 ( 2の1乗 × 1 + 2の0乗 × 0) 11 → 3 ( 2の1乗 × 1 + 2の0乗 × 1) 100 → 4 (2の2乗 × 1 + 2の1乗 × 0 + 2の0乗 × 0) : : 10100 → 20 (2の4乗 × 1 + 2の3乗 × 0 + 2の2乗 × 1 + 2の1乗 × 0 + 2の0乗 × 0)
2進数の場合は、桁数が多くなりすぎますが、 10進数と2進数では桁上げのタイミングが違いすぎるので、 8進数や16進数が使われます。特に16進数がよく使われます。
10進数 | 2進数 | 8進数 | 16進数 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
17 | 10001 | 21 | 11 |
: | : | : | : |
そして2進数の1つの1と0のデータの単位をビット(bit)、16進数で2桁(2進数で8桁)の0〜FF(0〜255)の単位をバイト(byte)と呼びます。
プログラムで計算などを行うには、メモリを使いますが、コンピュータとしてはメモリも100番地と150番地のデータのように数値で区別して扱います。通常の場合は1つの番地に1バイトのデータを記憶できます。
しかし、こんな数値ばかりでメモリを管理していたら大変です。ソースコードでは大抵、メモリを管理するためには自分で名前を付けた「変数」を使用します。
階乗の計算のソースコードでは、value, fact, iが変数です。自由に名前を付けれますが、英字の大文字小文字、数字、アンダーバー(_)が使用できます。先頭に数字は使用できません。せっかく自由なので分かりやすい名前にしましょう。iは分かりにくく感じると思いますが、繰り返し処理に使用される因子(iterator)の意味から来ているもので、よく使われる定石みたいな物となっています。
この変数の前についているintは「型」といって、データの意味を表すものとなっています。main()内の先頭行ではvalue, fact, iがint型であることを宣言しています。
最近のPCでは、intは32bit(4バイト)で10進数だと−2,147,483,648 から 2,147,483,647の値のデータと言う意味です。計算結果がこの範囲を越えることをオーバーフローといい、計算結果が意図通りにならない原因の1つです。
小数点を扱いや、マイナスの扱いも2進数で扱います。どのように扱うかは、IEEE754や、2の補数を調べてみてください。
1 | 準備(開発環境のインストール) |
2 | 準備(コマンドライン) |
3 | 準備(テキストエディタ) |
4 | Hello Worldと文法 |
5 | Hello World が動く仕組み |
6 | Hello World ウィンドウ表示(Windows) |
7 | Hello World ウィンドウ表示(GTK+) |
8 | 階乗の計算 |
9 | 数値と名前と変数 |
10 | 演算 |
0 件のコメント:
コメントを投稿