Effacer les filtres
Effacer les filtres

I want to write a Matlab function that will convert a decimal number into a binary number.

4 vues (au cours des 30 derniers jours)
Hi,
I am struggling to write a Matlab function that will convert a decimal number into a binary number with variables type double.
The function should also work for non-integer numbers. dec2bin doesn't work since it is only for integers.
I would be really happy if someone can help me with this! Thanks!

Réponse acceptée

Roger Stafford
Roger Stafford le 26 Oct 2017
Modifié(e) : Roger Stafford le 28 Oct 2017
This is a function I wrote for my own edification. Perhaps you can make use of it. It converts a single scalar 'double' to a string of 53 binary digits, including a binary (decimal) point, a sign, and an exponent of 2. This representation is precise, giving exactly what is contained in the number as stored in its internal IEEE 754 format.
[corrected]
function s = binstr(x)
if ~isfinite(x)|(length(x)~=1), error('x must be a finite scalar.'),end
b = (x<0); x = abs(x);
s = zeros(1,53);
[f,e] = log2(x);
for i = 1:53
f = 2*f;
d = floor(f);
f = f - d;
s(i) = d+48;
end
s = ['0.' s sprintf('*2^(%d)',e)];
if b, s = ['-' s]; end
s = char(s);
return
  8 commentaires
Roger Stafford
Roger Stafford le 28 Oct 2017
Thanks Walter, I've made the correction.
Roger Stafford
Roger Stafford le 11 Nov 2017
According to your error message, you still haven't changed 'finite' to 'isfinite'. I've made that change in the answer I gave some time ago.

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 26 Oct 2017
Modifié(e) : Walter Roberson le 26 Oct 2017

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by