检查给定数字是否是2的幂

问题描述 投票:0回答:2

我正在尝试编写一个函数,如果输入的数字是 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
2个回答
2
投票

在Matlab中,

%
是注释字符。从该点开始直到该行末尾的所有内容都将被忽略。这意味着这条线
if num%2~=0
并没有按照你想象的那样做。

请使用

mod
功能。 链接。在这种情况下,相关行变为
if mod(num, 2)~=0

另外,我怀疑有一种更有效的方法可以做到这一点。例如,参见此处


0
投票

在 Matlab 中,对于任何整数 num:

val=(num~=0 & (bitand(num,num-1)==0));
© www.soinside.com 2019 - 2024. All rights reserved.