我正在尝试编写一个函数,如果输入的数字是 2 的幂,则返回值 1,否则返回值 0。
function val = func_1(num) while not(num == 1) if num%2~=0 val=0; break end num=num/2; val=1; end end
但不幸的是,该函数总是返回值1。算法或代码是否有错误?预先感谢您的帮助。
在Matlab中,
%
if num%2~=0
请使用
mod
if mod(num, 2)~=0
另外,我怀疑有一种更有效的方法可以做到这一点。例如,参见此处。
在 Matlab 中,对于任何整数 num:
val=(num~=0 & (bitand(num,num-1)==0));