C言語でお願いします。

長さが32の0と1の列
se7e6…e1e0d1d2d3…d23
を入力してこのビット列の表す実数値

(-1)^s*(1+M)*2^E if -127<E<128
(-1)^s*M*2^(E+1) if E=-127
Inf(無限大) if E=128,M=0
NaN(非数) if E=128,M≠0
ここで、M=琶=1~23 di*2^-i , E=琶=0~7 ei*2^i−127

を出力するCプログラムを作成せよ。