プログラミングを頑張る日記

プログラミングを勉強して、ハッカーになろう

C++を頑張る(2)

ひっさしぶりにC++をやります!なんかそんな気分でした。
Lispが中途半端もいいところですが関係ないのです。
別にLispに飽きたわけではないです。

『ロベールのC++入門講座』を最初からやっていくつもりでしたが、
今更変数に値を設定するだとか条件分岐だとかを
「ふむふむ」とか言いながらやっていくのもなんか白々しいので、
3章から入ります。

ビットとバイト

この章はコンピュータの記憶単位の話らしいです。そういうの好き。
気合を入れてやっていきます。

コンピュータはデータをどう表現するのかというと、
基本的には0と1の集まりでやっているらしいです。
まあ、そういうもんだと聞いたことはあります。
0と1しか使えないのにどうやって、例えば9なんかを表すのか。
それには「2進数」というものを使っているらしいです。
普段我々が使っている数の数え方は0~9の10種類の数を使うので
「10進数」、2進数は0と1の二つの数を使うので2進数。簡単ですね。
2進数では先程例に出した10進数で9としているものは1001です。
2進数では数が二つだけなので、数は下記のように増えていきます。
0→1→10→11→100→101→110→111→… (合ってるかな…)

で、こんな感じで簡単に桁があがっちゃいます。
この1桁がビットです。簡単に桁があがっちゃうので1ビット単位で
情報を管理するのはあんまりよろしくないですね。
01101001の3桁目だけ見せられても何の話かわからないです。

そのため、8ビット単位でデータを扱うことが多いそうです。
この8ビットという単位をバイトと言うそうです。
つまり8バイトに入れられる最大の数値は11111111ですね。
10進数では255という数値で、なんか古めかしいゲームのステータス最大値なイメージです。
これを超えると変な数になったりするのはこういう事情があったんですね〜。

さて、データをバイトで管理しているということで、いつも使う変数も
当然バイト管理です。自分の環境である型が何バイトで管理されるのかは
sizeofという演算子で調べられるそうです。
いっちょ調べてみます。

#include <iostream>
using namespace std;


int main() {
    cout <<  "int... " << sizeof (int) << endl;
    cout <<  "float... " << sizeof (float) << endl;
    cout <<  "double... " << sizeof (double) << endl;
    cout <<  "char... " << sizeof (char) << endl;
    cout <<  "bool... " << sizeof (bool) << endl;
    
    return 0;
}

結果はこの様になりました。

int... 4
float... 4
double... 8
char... 1
bool... 1
Program ended with exit code: 0

特にコメントはありません…。どうコメントすれば良いのかも
今の知識ではわからないですね。
うちの環境ではintで10進数 4294967295までの数値が扱えるのかなあ、
ってところでしょうか。いや、その半分か。負の数がありますもんね。

ロベールは短く記事が区切られているのであっさりいけますね。
今日は大したことをしていませんが、ここまでです。あんまり気合入りませんでした。