Binary representation of a number in Matlab

前端 未结 3 1765
攒了一身酷
攒了一身酷 2021-01-03 03:13

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

相关标签:
3条回答
  • 2021-01-03 03:48

    Check this FileExchange submission:

    Floating number conversion to binary and vice-versa

    0 讨论(0)
  • 2021-01-03 04:05

    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, nospam@mosi.sk
    % 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, nospam@mosi.sk
        % 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
    
    0 讨论(0)
  • 2021-01-03 04:09

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

    0 讨论(0)
提交回复
热议问题