判断一个数是否时2的整数次方

题目描述:

  给一个数字 N,判断是否是2的整数次方?

解题方向:可以根据二进制的特点,用消去一法直接得出结果。

消去一法:  N--1可以使N的最低位的1为0,所以最低位的1之后的每一位都是0,因此 N &(N--1)(核心)就可以消去最低为的1.

题解思路:由于2的整数次方二进制表示形式只有一个1,所以利用消去1法后,结果一定为0.

代码:

//消去一法解是否是2的整数次方
    public static boolean  f(int N){  //输入的N不能为0
        if((N & (N-1))==0){
            return true;
        }else{
            return false;
        }
    }

原文地址:https://www.cnblogs.com/songchengyu/p/12657651.html

时间: 2024-10-27 18:56:46

判断一个数是否时2的整数次方的相关文章

快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方!

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

【C语言】判断一个数是否为2的n次方

//判断一个数是否为2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))) //去掉一个1,判断是否为0 return -1; return 1; } int main() { int a; printf("请输入数字:"); scanf_s("%d",&a); if (is_two_n(a)==1) printf("该数是2的次方\n"

面试官:判断一个数是否为2的整数次幂

判断一个正整数是否是2的整数幂(如4是2的2次方,返回true:5不是2的整数次幂,则返回false).要求性能尽可能高. 第一种考虑(乘法) 创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂, 如果不相等,则让temp乘以2,继续循环比较,直到temp的值大于目标整数时,说明整数不是2的整数次幂. 比如:18 1*2=2;2比18小继续 2*2=4;4比18小继续 4*2=8;8比18小继续 8*2=16;16比1

判断一个数是否是2的幂次方以及保留一个数的最高位的方法

#include <stdio.h> int check_power(unsigned int n){ /**************************************** * 如果n是2的幂,那么 (n-1)也就是其二进制全为1的数 *****************************************/ if (n & (n-1)) { return 1; } return 0;}unsigned int get_next_power(unsigned i

判断一个数是否是4的n次方

def is_Power_of_four(n): while n and not (n & 0b11): n >>= 2 return (n == 1) print(is_Power_of_four(4)) print(is_Power_of_four(12)) print(is_Power_of_four(16)) print(is_Power_of_four(255)) 原文地址:https://www.cnblogs.com/sea-stream/p/10172470.html

SQL判断一个数是整数还是小数

DECLARE @number1 AS numeric(10,2),@number2 AS numeric(10,2) SELECT @number1=10.00,@number2=10.2 SELECT CASE WHEN CAST(@number1 AS INT)[email protected] THEN '整数' ELSE '小数' END, CASE WHEN CAST(@number2 AS INT)[email protected] THEN '整数' ELSE '小数' END 

习题4 编写一个方法method(),判断一个数能否同时被3和5整除

编写一个方法method(),判断一个数能否同时被3和5整除 首先编写一个方法method(),由于是判断,所以返回的数据类型应是波尔型,并且向主方法传一个整数类型的参数X public class Zhawo11 { } public static boolean method(int x){ } } 接下来在子方法里判断,如果能同同时被3和5整除,就返回true,否则返回false public class Zhawo11 { public static void main(String a

javascript小实例,编写一个方法,实现从n-m个数中随机选出一个整数

别怪我是一个闷葫芦,没那么多花哨的语言,废话不多说,先说说小实例的要求: 编写一个方法,实现从n-m个数中随机选出一个整数,要求:传递的参数不足两个或者不是有效数字,返回[0-1]之间的随机数,需要解决n和m两个数大小问题,如果m<n,两个参数的值进行交换: 看到这个求随机数的小实例,相信很多人都会写,也写过很多相关的程序代码,所以,重要的知识点没有,旨在给初学者一些启发,大牛可略过! 既然是给初学者看的,那么我们就从最基本的东西一步一步的看,便于理解,先拆分一下要求吧: 1.求一个n-m的随机

vuex中filter的使用 &amp;&amp; 快速判断一个数是否在一个数组中

vue中filter的使用 computed: mapState({ items: state => state.items.filter(function (value, index, arr) { return index < 5 }) }), 如上所示,对于vuex,我们在使用mapState获取state时, 可以使用filter来过滤其中的元素,在filter的回调函数中接受三个参数,第一个是value,即每一个元素的值: 第二个是index, 即每一个元素所在的index, 第三个