我正在编写一个用户定义的函数来将整数转换为二进制。可以使用该函数转换的最大数字应该是二进制数 16 1 s。如果输入的数字越大,则该函数应显示错误 信息。使用我的代码,我试图根据余数将数字0或1添加到向量x,然后我想反转我的最终向量以显示二进制数字。这就是我所拥有的:
function [b] = bina(d)
% Bina is a function that converts integers to binary
x = [];
y = 2;
in = d/2;
if d >=(2^16 -1)
fprintf('This number is too big')
else
while in > 1
if in >= 1
r = rem(in,y);
x = [x r]
end
end
end
end
答案 0 :(得分:2)
当你坚持循环时:
x = [];
y = 2;
in = d;
if d >=(2^16 -1)
fprintf('This number is too big')
else
ii = 1;
while in > 0
r = logical(rem(in,y^ii));
x = [r x];
in = in - r*2^(ii-1);
ii = ii+1;
end
end
b = x;
您有正确的想法,但您需要在每次迭代时更新while循环中的变量。这主要是in
,您需要减去余数。只需将二进制余数存储在变量x
中。
您可以使用
检查结果x = double( dec2bin(d, 16) ) - 48
您也可以使用for循环,通过使用
预先计算迭代次数find( d < 2.^(1:16),1)
然后
if d >=(2^16 -1)
fprintf('This number is too big')
else
for ii = 1:find( d < 2.^(1:16),1)
r = logical(rem(in,y^ii));
x = [r x];
in = in - r*2^(ii-1)
end
end