2011年12月30日金曜日

ビット長と最大数の関係


みずらいけど 各ビット長での符号あり/なしの最小値と最大値の表

Excelの内部計算がIEEE 754だから 36bitくらいまでしかちゃんと表現できない
どうやったらちゃんと表現できるだろうね
一番手っ取り早いのは頭で倍々して行ってメモ帳とかで打ち込むのかw

とりあえず計算方法

符号あり最小値:((2^(ビット長 - 1)) * -1)
符号あり最大値:((2^(ビット長 - 1))-1)
符号なし最小値:0
符号なし最大値:((2^(ビット長))-1)
という感じ

符号ありは1bitが符号に割り当てられるので使えるビット長-1の長さが実際に使える範囲です
符号なしは2進のn乗を計算して1減算するだけです



#ifdef nonsns

掛け算とか割り算って 足し算とか引き算を繰り返すだけだから
数百桁の足し算とか引き算をできる関数を作ってやれば
128bitの最大値とかも計算できるだろうけど
足し算引き算掛け算割り算をする関数を作った所で
使い道が無いのが欠点だよね
超大規模な予算とか
天文学的数字の計算にしか使えない

Cで書いて
アセンブラに移植して
「PIC アセンブラでも1.8446744e+019位余裕で扱えます!」
とか? いらねぇよ…

#endif

とりあえずIEEE 754 と言うか 浮動小数点数とかが まだよくわかってないから
そこら辺も勉強し直さねば

Amazonから本とかいろいろ来て積み本もどんどん増えてるし...

0 件のコメント:

コメントを投稿