Filter löschen
Filter löschen

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

4 Ansichten (letzte 30 Tage)
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!

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 26 Okt. 2017
Bearbeitet: Roger Stafford am 28 Okt. 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 Kommentare
Roger Stafford
Roger Stafford am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 26 Okt. 2017
Bearbeitet: Walter Roberson am 26 Okt. 2017

Community Treasure Hunt

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

Start Hunting!

Translated by