Matlab 中数字的二进制表示

发布于 2024-12-22 04:38:55 字数 34 浏览 2 评论 0原文

有没有一个Matlab函数可以返回浮点数的二进制表示?

Is there a Matlab function that returns the binary representation of a float number?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

青瓷清茶倾城歌 2024-12-29 04:38:55

在Matlab中,可以使用Java JDK函数。

将 Matlab 中的 float(单精度 32 位数字)转换为二进制字符串表示形式的简短答案可能是:

flt=3.14
import java.lang.Integer java.lang.Float;
Integer.toBinaryString(Float.floatToIntBits(flt))

长答案:将 Matlab 中的 float(单精度 32 位数字)转换为二进制字符串表示形式

function out=float2binstring(flt)
% converts a float number to binary in matlab according to IEEE754
%
% Usage:
% float2binstring(-3.14)
%
% http://www.h-schmidt.net/FloatApplet/IEEE754.html
%
% Limitations:
% Rounding errors: Not every decimal number can be expressed exactly as a     floating
% point number. This can be seen when entering "0.1" and examining its binary     representation which is either slightly smaller or larger, depending on the last bit. 
%
% Andrej Mosat, [email protected]
% 03/2012
% v0.0
% License: GNU GPL
%
% See also: BINSTRING2FLOAT


% this is a trick to use java JDK should be installed, tested on Matlab R2010
import java.lang.Integer java.lang.Float;

if ( ~isnumeric(flt) )
    error('input must be a number');
end

out=Integer.toBinaryString(Float.floatToIntBits(flt));
end

以及转换二进制字符串要浮动一点开销:

function out=binstring2float(binstr)
    % converts a binary string to float number according to IEEE754
    %
    % Usage:
    % binstring2float('11000000010010001111010111000011')
    %   -3.14
    %
    % 
    % http://www.h-schmidt.net/FloatApplet/IEEE754.html
    %
    % Limitations:
    % Rounding errors: Not every decimal number can be expressed exactly as a floating
    % point number. This can be seen when entering "0.1" and examining its binary representation which is either slightly smaller or larger, depending on the last bit. 
    %
    % Andrej Mosat, [email protected]
    % 03/2012
    % v0.0
    % License: GNU GPL
    %
    % See also: FLOAT2BINSTRING

    import java.lang.Long java.lang.Float;

    if isequal(class(binstr), 'java.lang.String')
            binstr=char(binstr);
    end

    if ( ~isstr(binstr) )
        error('input must be a binary string');                                             
    end
    % Error handling for binary strings should be added here

    % the sign is negative

    if binstr(2)=='1'
        binstr(2)='';
        isnegative=1;
    else
        isnegative=0;
    end

    out=Float.intBitsToFloat( Long.parseLong(  binstr  , 2) );
    if isnegative
     out=-out;
    end

end

In Matlab, one can use Java JDK functions.

The short answer for converting float (single precision 32-bit number) in Matlab to a binary string representation might be:

flt=3.14
import java.lang.Integer java.lang.Float;
Integer.toBinaryString(Float.floatToIntBits(flt))

The long answer: conversion of float (single precision 32-bit number) in Matlab to a binary string representation

function out=float2binstring(flt)
% converts a float number to binary in matlab according to IEEE754
%
% Usage:
% float2binstring(-3.14)
%
% http://www.h-schmidt.net/FloatApplet/IEEE754.html
%
% Limitations:
% Rounding errors: Not every decimal number can be expressed exactly as a     floating
% point number. This can be seen when entering "0.1" and examining its binary     representation which is either slightly smaller or larger, depending on the last bit. 
%
% Andrej Mosat, [email protected]
% 03/2012
% v0.0
% License: GNU GPL
%
% See also: BINSTRING2FLOAT


% this is a trick to use java JDK should be installed, tested on Matlab R2010
import java.lang.Integer java.lang.Float;

if ( ~isnumeric(flt) )
    error('input must be a number');
end

out=Integer.toBinaryString(Float.floatToIntBits(flt));
end

And a conversion of binary string to float with a little overhead:

function out=binstring2float(binstr)
    % converts a binary string to float number according to IEEE754
    %
    % Usage:
    % binstring2float('11000000010010001111010111000011')
    %   -3.14
    %
    % 
    % http://www.h-schmidt.net/FloatApplet/IEEE754.html
    %
    % Limitations:
    % Rounding errors: Not every decimal number can be expressed exactly as a floating
    % point number. This can be seen when entering "0.1" and examining its binary representation which is either slightly smaller or larger, depending on the last bit. 
    %
    % Andrej Mosat, [email protected]
    % 03/2012
    % v0.0
    % License: GNU GPL
    %
    % See also: FLOAT2BINSTRING

    import java.lang.Long java.lang.Float;

    if isequal(class(binstr), 'java.lang.String')
            binstr=char(binstr);
    end

    if ( ~isstr(binstr) )
        error('input must be a binary string');                                             
    end
    % Error handling for binary strings should be added here

    % the sign is negative

    if binstr(2)=='1'
        binstr(2)='';
        isnegative=1;
    else
        isnegative=0;
    end

    out=Float.intBitsToFloat( Long.parseLong(  binstr  , 2) );
    if isnegative
     out=-out;
    end

end
如若梦似彩虹 2024-12-29 04:38:55

看起来您可以使用 num2hex 来将浮点数转换为十六进制字符串。

It looks like you can use num2hex to convert a floating point into a hex string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文