当我尝试将十进制数字(例如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
答案 0 :(得分:4)
您可以使用typecast
将您的双打转换为uint64,然后使用dec2bin
:
ui = typecast(pi, 'uint64');
dec2bin(ui)
ans =
100000000001001001000011111101101010100010001000010110000000000
typecast
会更改您查看数据的方式,而不会进行任何实际类型转换。因此,您将获得原始double作为无符号64位整数。现在,您必须根据IEEE标准754自行解码。
答案 1 :(得分:0)
关于如何用二进制表示小数,没有一个正确的答案。双精度浮点数是1,如果这是你想要的二进制字符串,请参阅angainor的答案。其他选择是单精度浮点或某种形式的固定点。在固定点,您基本上将数字的缩放版本编码为整数。
在任何情况下,数据的使用者需要在二进制字符串有意义之前就确切的格式达成一致。二进制字符串的用例是什么?