6 ビット浮動小数点小数の設計

要求:以下のような6ビットの小数を設計する。

符号:1ビット 指数部:3ビット 仮数部:2ビット バイアス:+3

課題1: 実数1, 0, 1.25 の上記の6ビットでの表現を示す。

$1 \rightarrow 001100$

$0 \rightarrow 000000, 100000$

$-1.25 \rightarrow 101101$

(Markdownの文法を使って、表を作成することができます。)

十進数 6ビット浮動小数点数
1 001100
+0 000000
-0 100000
-1.25 101101

(以下は標準なHTML言語を使って、表を作っています。)

十進数6ビット浮動小数点数
1 001100
0 000000, 100000
-1.25 101101

課題2: すべてのinf とNaN を書いてください。

正無限大 $\rightarrow 011100 $
負無限大 $\rightarrow 111100 $
NaN $\rightarrow 011110, 011101, 011111, 111110, 111101, 111111 $

課題3: すべての非負の不動点小数を二進数と十進数で書いてください。非正規化数の場合、(*)と標記してください。

例:000010 = 0:0625(*)

十進数 1 2 3 4 5 6
0.25 0 0 0 1 0 0
0.3125 0 0 0 1 0 1
0.375 0 0 0 1 1 0
0.4375 0 0 0 1 1 1
0.5 0 0 1 0 0 0
0.625 0 0 1 0 0 1
0.75 0 0 1 0 1 0
0.875 0 0 1 0 1 1
1 0 0 1 1 0 0
1.25 0 0 1 1 0 1
1.5 0 0 1 1 1 0
1.75 0 0 1 1 1 1
2 0 1 0 0 0 0
2.5 0 1 0 0 0 1
3 0 1 0 0 1 0
3.5 0 1 0 0 1 1
4 0 1 0 1 0 0
5 0 1 0 1 0 1
6 0 1 0 1 1 0
7 0 1 0 1 1 1
8 0 1 1 0 0 0
10 0 1 1 0 0 1
12 0 1 1 0 1 0
14 0 1 1 0 1 1
0.0625(*) 0 0 0 0 0 1
0.125(*) 0 0 0 0 1 0
0.1875(*) 0 0 0 0 1 1

問題4: すべての非負の正規化数をx 軸に書いてください。

MATLAB言語を使って、数列をX軸に描画するコードを使う。

In [1]:
%以下のコードは繰り返し使っているので、draw_x_on_axis というfunctionを定義する。

function draw_x_on_axis(x)
y=x*0;
plot(x,y,'-o') %  "o" を使って、点を描画する。
axis off % 図のフレームボックスを隠れる。
xticklabel = strjust(num2str(x'),'center'); % xの要素を文字列に変換する。
ind=1:2:length(x); %X 軸の上に、奇数目の要素を描く。
text(x(ind),y(ind)+0.1,xticklabel(ind,:), 'horizontalalignment','center')
ind=2:2:length(x); %X 軸の下に、偶数目の要素を描く。
text(x(ind),y(ind)-0.1,xticklabel(ind,:),'horizontalalignment','center')
set(gca, "linewidth", 2, "fontsize", 4)
end
In [2]:
x1=[0.25,0.3125,0.375,0.4375,0.5,0.625,0.75,0.875]; 
draw_x_on_axis(x1)
Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 gnuplot_plot_1a 0.25 0.375 0.5 0.75 0.3125 0.4375 0.625 0.875
In [3]:
x2=[1,1.25,1.5,1.75,2,2.5,3,3.5,4,5];
draw_x_on_axis(x2)
Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 gnuplot_plot_1a 1 1.5 2 3 4 1.25 1.75 2.5 3.5 5
In [4]:
x3=[6,7,8,10,12,14];
draw_x_on_axis(x3)
Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 gnuplot_plot_1a 6 8 12 7 10 14

課題5: すべての非負の非正規化数と0をx 軸に書いてください。

In [6]:
x=[0,0.0625,0.125,0.1875];
draw_x_on_axis(x)
Gnuplot Produced by GNUPLOT 4.6 patchlevel 4 gnuplot_plot_1a 0 0.125 0.0625 0.1875
In [ ]: