コンピュータ・サイエンス②
2進数・・0と1を使って数字を表す方法
左シフトと右シフト
2進数は左に1桁シフトすると、もとの値の2倍になる。(10進数なら10倍)
右シフトは2種類ある。
・論理右シフト・・グラフィックのパターンなどに使う(ネオンサインなど)。シフト後の上位桁に0を代入する。
・算術右シフト・・シフト後の上位桁に1を代入する。 (例) -4(11111100)を右シフトして上位桁に0を入れると63(00111111)になり1/4倍にならない。逆に上位桁に1を入れると、-1(11111111)となり正しい。
2進数でマイナスを表すときは補数を使う。
(例)1(00000001)の補数(-1)を求める。
00000001を反転(0と1を逆にする)=>11111110 これに1を加える=>11111111 これが-1。実際に00000001 + 11111111 = 100000000となり、9桁目は桁あふれで無視できるので0になる。
補数は「反転した1を加える」と覚えられる。
倍精度浮動小数点型と単精度浮動小数点型
倍精度浮動小数点型は全体で64ビット ・符号部 1ビット ・指数部 11ビット ・仮数部 52ビット
単精度浮動小数点型は全体で32ビット ・符号部 1ビット ・指数部 8ビット ・仮数部 23ビット
仮数部は「小数点以上の値を1に固定する正規表現」、指数部は「イクセス表現」で表す。
仮数部は、値が1になるまで右シフトをして小数点以下が23ビットになるよう0を追加する。最後に小数点以上を除外して完成。(小数点以上は1だとわかっているので)
指数部は、10進数に変換した値を127で引いたもの。 (例)11111111 => 255 -127 = 128 この128が指数部。エクセス表現は-127〜128しか取らない。
これらを用いて小数を表す。