如何用二进制形式表示双重数字?

时间:2014-12-30 22:36:33

标签: matlab floating-point

如何以二进制形式表示双重类型编号,例如:

dec = 3.14159

到一个数组包含其IEEE 754双精度二进制表示,binaryconvert.com

bin = 0100000000001001001000011111100111110000000110111000011001101110
在Matlab中

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

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

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

示例:

hexToBinaryVector(num2hex(pi))
ans =
    1100000000001001001000011111101101010100010001000010110100011000

答案 1 :(得分:1)

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

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