基本情報技術者試験な備忘録(2進数・小数)


パソコン・算数素人です。

こちらは素人です。ただのメモです。間違いありかも。
著作権など問題あればすぐに削除します。

基本情報技術者試験の問題・テキスト等を見て気になったメモです。
間違っているので見ないで下さい。すみません。

 

最初のギモン
・IEEE754…浮動小数点演算に関する標準規格で気になった。
・「浮動小数点」って何?
・0.5とか小数点以下の話らしい。
////////////////////////////////////
以前、整数の「10進数→2進数」変換とかは、やった。
(10進数の数字を2で割っていき、余りを出して、2進数にする。)


今回は、小数点以下の「10進数→2進数」変換のこと。
(固定小数点は割愛します。)
(なお、これはパソコンの話です。)
参考サイト:【基本情報技術者試験浮動小数点-ITを分かりやすく解説 様


---------------------------------------------------------
まず、10進数の小数→2進数にするには、形式が2つあるらしい。

IEEE754の浮動小数点の形式(IEEE754浮動小数点規格)と
それ以外の浮動小数点の形式(単精度浮動小数点形式32bit)(倍精度浮動小数点形式64bit)等。
(IEEE754以外はどういう言い方が正しいのかな。多分、IEEE754も32bitなら「単精度」というのだろうし・・・。
(単精度のIEEE754それ以外の単精度))

--------------------------------------------------------
まず、それ以外の【浮動小数点の形式(単精度浮動小数点形式)】について

32ビットだと
「符号部1ビット 指数部7ビット 仮数部24ビット」
で構成する。


符号は、正が0、負が1
指数部は、2^nのnを格納(小数なので、負の数(2のマイナス2乗とか)になり「2の補数」を使用)
仮数部は、正規化した小数以下の値を格納(今回は小数以下しか扱いません。)

まず、正規化・・・小数点の位置を調整し、最上位桁を0以外の値にする作業

まず2進数化します。(具体的には、最初に小数部を2倍していきます。)


例:0.75と0.375


上記の通り、10進数0.75だと2進数0.11です。
上記の通り、10進数0.375だと2進数0.011です。


2進数の整数だと左に行く(桁が上がるごとに)2倍ですが、
2進数の小数だと右に行く(桁が下がるごとに)1/2です。(当たり前か)
(整数の2進数化は割り算ですが、小数の2進数化は掛け算です。)

 



次に、2進数化した数字を指数で表して、指数部と仮数部を作ります。

桁を揃えます。上

ビットにはめ込みます。

上記はエクセルでの計算式。

上記は仮数部。

完成。

--------------------------------------------------------------------

【IEEE754の浮動小数点の形式(IEEE754浮動小数点規格)】

32ビットだと
「符号部1ビット 指数部8ビット 仮数部23ビット」
で構成する。

また、相違点として、正規化は、「1.××」で正規化とのこと。(「0.××」ではない。)


小数の2進数化1
→小数部を2倍して整数部を書きだす。(ここは同じ)


下やり方違います。

これもやり方違います。下駄をはかせる。指数部

仮数

 

くっつけて終わり。

 

 

IEEE754の方は、多分合ってます(多分)。(IEEE754でない)単精度浮動小数点形式32bitはどうだろう。

試験問題では、応用情報技術者試験平成22年春午前に、16ビットの(IEEE754でない)単精度浮動小数点形式が出ていて、正規化した2進数の数字を選択する問題がありました。