如何以二进制形式表示双精度类型数字?

How to represent double type number in binary form?

提问人:Dante 提问时间:12/31/2014 最后编辑:mehmetDante 更新时间:12/31/2014 访问量:145

问:

如何以二进制形式表示双精度类型数字,例如:

dec = 3.14159

数组由其 IEEE 754 双精度二进制表示组成 binaryconvert.com 就像它一样

bin = 0100000000001001001000011111100111110000000110111000011001101110

在Matlab中?我知道有类似的问题,但不适用于 Matlab。

MATLAB 浮点

评论

0赞 rayryeng 12/31/2014
mathworks.com/matlabcentral/fileexchange/......

答:

1赞 Fantastic Mr Fox 12/31/2014 #1

您可以执行以下操作:

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

例:

hexToBinaryVector(num2hex(pi))
ans =
    1100000000001001001000011111101101010100010001000010110100011000

评论

0赞 horchler 1/1/2015
仅供参考,hexToBinaryVector 位于数据采集工具箱中。我的学术安装中拥有大多数工具箱,但不幸的是,我认为这个工具箱并不常见。此外,第一位(符号位?)似乎与@LuisMendo的答案和 OP 问题中的 URL 返回的内容相反。
1赞 Luis Mendo 12/31/2014 #2

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

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