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

조회 수: 9 (최근 30일)
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!

채택된 답변

Roger Stafford
Roger Stafford 2017년 10월 26일
편집: Roger Stafford 2017년 10월 28일
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
Roger Stafford
Roger Stafford 2017년 11월 11일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2017년 10월 26일
편집: Walter Roberson 2017년 10월 26일

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by