好きな「お肉」は?

こんばんわ,

今,ある参考書のファイルで
「0000 1010 1010 1010 1010 1010 1010」
という28ビットのバイナリーデータが小数部分をあらわすとき,それをfloat,もしくはdouble型のxに変換せよ。

という,問題があるのですが,1つ1つ上位ビットから0.5×0+0.25×0+・・・とやっていく方法以外にビット演算子やシフト演算子,関数を使用して簡単にできる方法がありましたら教えてください。

ちなみにC言語で作成しています(データはBIGもしくはLITTLEエンディアンどちらの方法でもかまいません)。

A 回答 (2件)

整数とみなして10進数に直し、2^28で割るというのではいけませんか。


私は良く使うのですが。
    • good
    • 0

バイトオーダーが合っているという前提で



union {
unsigned char buf[28];
double d;
}u;

のような共用体を使用し、

u.bufにデータを突っ込んで、u.dで取り出す。

参考URL:http://www2.komonet.ne.jp/~c/chap36.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報