【发布时间】:2019-01-16 15:48:46
【问题描述】:
我正在尝试将十进制数转换为二进制数。它适用于常规十进制数。但是,当我输入 (25.10) 时,我得到了下标错误。
下面是我的代码。
function [binary] = decimal2binary(decimal)
% floor : rounds towards minus infinity
% rem : remainder after division
% num2str : converts numbers to strings
% fliplr : flips string bits to get correct order
i = 1.0;
q = floor(decimal/2);
r = rem(decimal, 2);
% THIS IS WHERE THE ERROR OCCURS binary(i) = num2str(r(i));
while 2 <= q
decimal = q;
i = i+1;
q = floor(decimal/2);
r = rem(decimal, 2);
binary(i) = num2str(r);
end
binary(i + 1) = num2str(q);
binary = fliplr(binary);
end
【问题讨论】:
-
输入
25.10的输出应该是什么? -
@LuisMendo 将十进制数转换为二进制...我的函数有小数点问题...
-
附带说明,Matlab 有函数 dec2bin,dec2bin(25.10) 产生 '11001'(即 25)。我认为您的代码无法生成小数部分的二进制形式(0.10 = 0*0.5+0*0.25+0*0.125+1*0.0625...),从而产生“0.0001...”。也许提供一些关于您为什么要转换十进制数的上下文。
-
@FrankBoccia 您的代码使用什么方法?您是否使用调试器跟踪执行以查看发生错误时变量的值?你希望
binary(i) = num2str(r(i));做什么(或者是binary(i) = num2str(r);?)