而八度中的无限循环

时间:2019-07-12 16:48:49

标签: while-loop octave

我正在编写一个无需使用库方法即可将十进制数转换为二进制数的代码。但是使用while循环。似乎它陷入了无限循环。

在调试器模式下,我尝试查看x的值是什么。但是,即使x的值变为0或1,while循环也不会退出。是八度音阶中的错误,还是Matlab出现了这个问题(我没有Matlab或在任何位置都可以使用它)?

function ans = dec2bin(input)
  x = int16(input);
  y = [];
  while (x!=1) || (x!=0)
    y=[mod(x,int16(2)) y];
    x=idivide(x,int16(2));    
  end
  y=[mod(x,int16(2)) y];
  ans = arrayfun(@(a) mat2str(a) ,y);
end

1 个答案:

答案 0 :(得分:0)

条件(x!=1) || (x!=0)始终为true-如果x为1,则不等于0,反之亦然。您应该使用&&逻辑条件,而不是||

while (x!=1) && (x!=0)