アウトプットの部屋

エンジニアになるためのアウトプット

コンピュータ・サイエンス②

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しか取らない。

これらを用いて小数を表す。