MATLAB Answers

RD
0

How can I convert a binary fraction to decimal?

Asked by RD
on 16 Jun 2019
Latest activity Edited by Jan
on 16 Jun 2019
Accepted Answer by Jan
To convert from binary to decimal I use this function: bin2dec('1001')
But how I could like to know how can I convert binary fractions to decimal, just like this: bin2dec('0.110001')

  0 Comments

Sign in to comment.

Tags

1 Answer

Answer by Jan
on 16 Jun 2019
Edited by Jan
on 16 Jun 2019
 Accepted Answer

'11001' means: 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 or:
[1,1,0,0,1] * 2 .^ (4:-1:0).'
(this is what happens inside bin2dec - examine its source code.)
'0.10011' means: 1*2^-1 + 0*2^-2 + 0*2^-3 + 1*2^-4 + 1*2^-5, or:
[1,0,0,1,1] * 2 .^ (-1:-1:-5).'
So all you have to do is to split the part before and after the decimal dot and to convert the character to numbers. Both is easy in Matlab:
S = strsplit('11001.10011', '.');
intV = S{1} - '0';
fracV = S{2} - '0';
intValue = intV * (2 .^ (numel(intV)-1:-1:0).')
fracValue = fracV * (2 .^ -(1:numel(fracV)).')
% or:
sum(fracV .\ (2 .^ (1:numel(fracV))))

  1 Comment

+1 of course. I once wrote a tool that goes the other way. Converting to decimal number to a binary "bicimal" form.

Sign in to comment.