最高功率的两个 - JavaScript

时间:2016-01-22 14:13:59

标签: javascript google-apps-script

我正在使用谷歌应用程序脚本,它与javascript一起工作,我正在编写一段代码,它返回两个除以数字的最高功率,但它不起作用。为什么?

function HP2(input) {
  var i = 1;
  while(input % 2^i = 0){
  i++;
  };
  return 2^i;
}

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要在==条件和while函数中使用Math.pow而不是xor运算符^。返回值应为i-1

function HP2(input) {
  var i = 1;
  while(input % Math.pow(2, i) == 0) {
    i++;
  };
  return Math.pow(2, i-1);
}

答案 1 :(得分:0)

如果你保持在32位范围内(至少对于除数),这将是更高效的方式:

function HP2(input){
    for(var i=0; i<31 && !(input & (1<<i)); ++i);
    return (1<<i)>>>0;
}