0

1.571 などの 10 進数を 2 進数に変換しようとすると、整数以外のすべての値が 0 になります。MATLAB で小数を 2 進数で表示する方法はありますか?

ここに私のコードの抜粋があります:

%The region between 0 and 2*pi is split up into 40 sections
N=20;
%The step is an the incrementation amount of the calculated sin
step= (2*pi)/40
%Cycle through and calculate the sin at each step
for i=1:N
    C_r(i) =  sin(step*i)
end

for i = 1 : N
    str_r = dec2bin(C_r(i),24);
end
4

2 に答える 2

4

typecast次を使用して double を uint64 に変換できますdec2bin

ui = typecast(pi, 'uint64');
dec2bin(ui)
ans =

100000000001001001000011111101101010100010001000010110000000000

typecast実際の型変換なしで、データの表示方法を変更します。したがって、生の double を符号なし 64 ビット整数として取得します。IEEE Standard 754 に従って、自分でデコードする必要があります。

于 2012-10-05T14:54:50.253 に答える
0

小数を 2 進数で表現する方法について、正解は 1 つではありません。倍精度浮動小数点が 1 つです。これが必要なバイナリ文字列である場合は、angainor の回答を参照してください。その他の選択肢としては、単精度浮動小数点または何らかの形式の固定小数点があります。固定小数点では、基本的に数値のスケーリングされたバージョンを整数としてエンコードします。

いずれにせよ、バイナリ文字列が意味をなす前に、データの消費者は正確な形式に同意する必要があります。バイナリ文字列の使用例は何ですか?

于 2012-10-05T15:11:45.957 に答える