How can I convert a binary fraction to decimal?
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Jan
le 16 Juin 2019
Modifié(e) : Jan
le 28 Nov 2019
'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))))
% [EDITED] Typo fixed: ^ this was \ before
3 commentaires
David K
le 27 Nov 2019
This is great, thank you! I think you have a typo in your last code block though. I believe the ldivide on the last line should actually be a rdivide.
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!