プログラムはなぜ動くのか?
移転しました。
プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
- 作者: 矢沢久雄
- 出版社/メーカー: 日経ソフトウエア
- 発売日: 2007/04
- メディア: 単行本(ソフトカバー)
- 購入: 45人 クリック: 646回
- この商品を含むブログ (73件) を見る
ちょっとコンピュータの本質のところを知らないといけない気がして読んで理解を試みる。
少し読んでみると、大学1年のときの記憶がちょっとずつ蘇ってきた。2進数とか補数とか。もうちょっと頑張って聞いておけばよかったなぁって今思います。
とりあえず今日読んだところまで復習がてらメモします。
第一章 プログラマにとってCPUとはなにか
CPUやメモリーの実体は、多くのトランジスタから構成されたIC(Integrated Circuit,集積回路)と呼ばれる電子部品。
CPU
- レジスタ
- 制御装置
- 演算装置
- クロック
レジスタ・・・処理対象となる命令やデータを格納する領域。
制御装置・・・メモリー上の命令やデータをレジスタに読み出し、命令の実行結果に応じてコンピュータ全体を制御する。
演算装置・・・メモリからレジスタに読み出したされたデータを演算する
クロック・・・CUPが動作するタイミングとなるクロック信号を発生させる。
これら4つの要素があげられるが、プログラマが意識するのはレジスタだけ。なぜなら、プログラムはレジスタを対象として記述されるから。
アセンブリ言語は、CPUの動作を表したものだと言える。
CPUにできることはいたって簡単
- データ転送命令
- 演算命令
- ジャンプ命令
- コール/リターン命令
関数を呼び出す、元に戻す
第2章 データを2進数でイメージしよう
補数を求める・・・反転して+1
左シフト・・・2倍
右シフト・・・1/2倍を表す
排他的論理和・・・相手を排除する、つなわち同じことが嫌い
両者が異なる場合・・・1
それ以外・・・0
Cのプログラムでは、「Ox」をつけることで16進数を意味する
論理右シフトと算術右シフトの違い
論理右シフトでは、空いた上位桁に「0」を格納する。
算術右シフトでは、空いた上位桁に「符号ビットの値」を格納する。
実際には何が違ってくるのか?
論理右シフトは、電光掲示板のイメージ
第3章 コンピュータが小数点の計算を間違える理由
ここで出ました、浮動少数点数。やはり何回出会ってもいまいちすっきり理解できません。てか、数が出てくると頭がパンクするエセ理系の悪い癖です。
イクセス表現
指数部で表せる範囲の中央の値をゼロとみなすことにより、符号ビットを使わないでマイナスの値を表す工夫