0

当我尝试将十进制数(例如 1.571)转换为二进制时,对于所有非整数值,我得到 0。有没有办法在MATLAB中以二进制显示小数?

这是我的代码的摘录:

%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您可以使用然后使用将您的双打转换为 uint64 dec2bin

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

100000000001001001000011111101101010100010001000010110000000000

typecast更改您查看数据的方式,而无需任何实际的类型转换。因此,您将获得原始双精度为无符号 64 位整数。现在您必须根据 IEEE 标准 754 自行解码。

于 2012-10-05T14:54:50.253 回答
0

关于如何用二进制表示小数,没有一个正确的答案。双精度浮点数是一,如果这是您想要的二进制字符串,请参阅 angainor 的答案。其他选择是单精度浮点或某种形式的定点。在定点中,您基本上将数字的缩放版本编码为整数。

在任何情况下,数据的消费者都需要在二进制字符串有意义之前就确切的格式达成一致。您的二进制字符串的用例是什么?

于 2012-10-05T15:11:45.957 回答