zoukankan      html  css  js  c++  java
  • 位运算---2、3、4的幂

    2的幂——即数字按位展开只有一位为1,所以 num&(num - 1) ==0;

    return (n>0)&&((n&(n-1))==0)

    4的幂——相较于2的幂而言对二进制位要求更高,不仅要求数字按位展开只有一位为1,且1的后面必须有偶数个0,即…00000100,…00010000,…01000000。

    法一:
    (num-1)后必然是三的倍数:

    return  ((num & (num - 1)) == 0) && ((num - 1) % 3 == 0);

    法二,既然已规定32位,那么只有将所有的4的幂的位置上置1——即0x…101010101010101(0x55555555)与num相与为num本身即可;

    return (num >0)&&((num & (num - 1)) == 0) && ((num & 0x55555555) == num);

    法三:由幂的定义出发:利用换低公式 x = log4(num )(以4为底),x为整数即可。

    return (num > 0) && (Math.ceil(Math.log10(num) / Math.log10(4)) - Math.log10(num) / Math.log10(4) == 0);

    3的幂——由幂的定义出发:利用换低公式x = log3(num )(以3为底),x为整数即可;或者Math.pow(log3(num)) == num即可

    return (n > 0) &&(Math.pow(3,Math.round((Math.log(n)/Math.log(3))))==n);

  • 相关阅读:
    C# treeView添加节点 删除节点
    xml 基础
    第一章魔兽窗口
    混合开发的框架的初步见解
    node.js的初步见解
    AngularJs的理解
    jquery属性,遍历,HTML操作
    jquery中动画效果的函数
    jquery的选择器
    js操作DOM对象及怎么获取浏览器宽高
  • 原文地址:https://www.cnblogs.com/ckAng/p/12342444.html
Copyright © 2011-2022 走看看