【问题标题】:How to represent double type number in binary form?如何以二进制形式表示双精度数?
【发布时间】:2014-12-31 10:14:08
【问题描述】:

如何以二进制形式表示double类型数,例如:

dec = 3.14159

数组由其 IEEE 754 双精度二进制表示形式组成,就像 binaryconvert.com 所做的那样

bin = 0100000000001001001000011111100111110000000110111000011001101110

在 Matlab 中?我知道有一个similar question,但不是用于 Matlab。

【问题讨论】:

标签: matlab floating-point


【解决方案1】:

您可以执行以下操作:

hexdec = num2hex(dec);
bin = hexToBinaryVector(hexdec);

例子:

hexToBinaryVector(num2hex(pi))
ans =
    1100000000001001001000011111101101010100010001000010110100011000

【讨论】:

  • 仅供参考,hexToBinaryVector 在数据采集工具箱中。我的学术安装中有大多数工具箱,但不幸的是,我认为这个工具箱并不常见。此外,第一位(符号位?)似乎与@LuisMendo 的答案和 OP 问题中的 URL 返回的相反。
【解决方案2】:

这可以通过typecast(...,'uint8') 来获取单个字节;然后fliplr 更改字节字节序(至少在我的机器上需要);然后使用dec2base(...,2,8) 将每个字节转换为二进制;最后reshape'ing 到单行:

bin = reshape(dec2base(fliplr(typecast(dec,'uint8')),2,8).',1,[]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2022-09-24
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多