【问题标题】:Converting a non-integer number to binary in MATLAB在MATLAB中将非整数转换为二进制
【发布时间】:2012-09-26 18:08:05
【问题描述】:

当我尝试将十进制数(例如 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

【问题讨论】:

    标签: matlab binary integer decimal


    【解决方案1】:

    您可以使用 typecast 将双打转换为 uint64,然后使用 dec2bin

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

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

    【讨论】:

    • 请注意,根据dec2bin 的文档,只能为ui 提供精确 二进制表示,最高可达2^52。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 2012-04-10
      • 2021-11-03
      • 2012-05-11
      • 2015-09-21
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多