I want to write a Matlab function that will convert a decimal number into a binary number.
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
H
el 26 de Oct. de 2017
Comentada: Roger Stafford
el 11 de Nov. de 2017
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!
0 comentarios
Respuesta aceptada
Roger Stafford
el 26 de Oct. de 2017
Editada: Roger Stafford
el 28 de Oct. de 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 comentarios
Roger Stafford
el 11 de Nov. de 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.
Más respuestas (1)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!