判断一个整数是否是2的N次幂实现方法

实例如下:

static bool CheckPowerOfTwo(ulong num)
{
  return num > 0 && (num & (num - 1)) == 0;
}

以上这篇判断一个整数是否是2的N次幂实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了.4的整数次幂的二进制数都为 (4)100.(16)10000.(64)1000000......另外,4的幂次方4^n也可以写为2^(2*n),即也可以写为2的幂次方,当然就满足2的幂次方的条件了,即num & num-1==0.思路:首先用条件num & num-1==0来判断是否为2的幂次方,若不满足,则不是.若满足

  • C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1:因此将原来的数与去减去1后的数字进行与运算后会发现为零. 最快速的方法: (number & number - 1) == 0 原因:因为2的N次方换算是二进制为10--0这样的形式(0除外).与上自己-1的

  • 如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?

    将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了.如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1:因此将原来的数与去减去1后的数字进行与运算后会发现为零.最快速的方法:(number & number - 1) == 0原因:因为2的N次方换算是二进制为10--0这样的形式(0除外).与上自己-1的位数,这们得到结果为0.例如.8的二进制为1000:8-1=7,7的二

  • 判断一个整数是否是2的N次幂实现方法

    实例如下: static bool CheckPowerOfTwo(ulong num) { return num > 0 && (num & (num - 1)) == 0; } 以上这篇判断一个整数是否是2的N次幂实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 如何判断一个整数的二进制中有多少个1

    复制代码 代码如下: // 判断一个整数的二进制位中有多少个1void totalOne(int x){ int count = 0; while(x) {  x = x & ( x - 1 );  count++;  } printf("count = %d/n", count);} 循环: x = x & ( x - 1 ); count++; 直到x为0为止.该方法的时间复杂度是O(m)在此,不妨把x的二进制位表示为          x=an-1an-2...a

  • Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(self, x): """ :type x: int :rtype: bool """ #思路:先将整数转换为字符串,再将字符串翻转并与原字符串做比较 x = str(x) return x == x[::-1] 代码简洁 第二个思路,尝试着不用字符串,

  • C#判断一个字符串是否是数字或者含有某个数字的方法

    第一种就是 最常见的 用Try..Catch.. 再try中强转你要确认的string 类型 成功就是int  catch 就不是 string a = "avdfd"; try { int b = int.Parse(a); } catch (Exception) { Console.WriteLine("不是"); } 还有就是简单一点的 int.Tryparse() 比如 bool IsNumber = int.TryParse("你要判断的值&qu

  • C#判断一个类是否实现了某个接口3种实现方法

    B为一个类,ISay为一个接口. 方法1: 复制代码 代码如下: B b = new B();   if (b.GetType().GetInterface("ISay") != null)             {                 //如果实现了接口"ISay",...             } 方法2: 复制代码 代码如下: B b = new B();  if (b is ISay)             {               

  • Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API

    复制代码 代码如下: /** * Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API. <br> * 1.不得使用任何API,如Math.abs()等.<br> * 2.不得使用判断语句,如if.for.while.switch.?:等.<br> * 3.不得使用比较语句,如:==. <=.>=.!=. <.>等. <br> * * @author JAVA世纪网(java2000.net, laozizhu.com)

  • PHP判断一个变量是否为整数、正整数的方法示例

    在PHP中判断一个变量是否为整数 在写PHP代码的时候遇到这样一个小问题:如何判断一个变量是否为整数,于是在网上找到了两个方法来解决,在此做一个小小的记录. 方法1 <?php $num=12; //返回right //$num=12.1 返回false if(is_int($num)){ echo "right"; }else{ echo "false"; } ?> 这里用is_int()方法来判断传入的参数是否为整数形(int),而不是判断它是否为整

  • python判断一个数是否能被另一个整数整除的实例

    判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧. 输入格式 输入包括两个由空格分开的整数M 和 N(1≤M,N≤500) 输出格式 输出包括一行,如果 M 可以被 N 整除就输出YES,否则输出NO(结果大小写敏感). 样例输入 21 7 样例输出 YES str = input() nums = str.split() if int(nums[0]) % int(nums[1]) == 0: prin

  • python怎样判断一个数值(字符串)为整数

    目录 如何判断一个数值(字符串)为整数 不严格检查方法 严格的检查方法 判断输入的字符串是否是整数还是小数 总结 如何判断一个数值(字符串)为整数 不严格检查方法 浮点数的自带方法is_integer() 如果确定输入的内容为浮点数,是可以直接使用float数的is_integer()函数来进行判定. 需要注意的是当数字是 1.0这样的不带小数数值的浮点数时,会被默认判定为整数 a=1.0 print(a.is_integer()) #结果为 True b=1.1 print(b.is_inte

  • 用C语言判断一个二叉树是否为另一个的子结构

    1.问题描述: 如何判断一个二叉树是否是另一个的子结构?      比如: 2       /   \      9    8     / \    /    2  3  5   / 6 有个子结构是    9   / \ 2  3 2.分析问题:     有关二叉树的算法问题,一般都可以通过递归来解决.那么写成一个正确的递归程序,首先一定要分析正确递归结束的条件. 拿这道题来讲,什么时候递归结束. <1>第二个二叉树root2为空时,说明root2是第一棵二叉树的root1的子结构,返回tr

随机推荐