判断 一个数是不是 4 的幂

class Solution
{
public:
    bool isPowerOfFour(int num)
    {
        if(num<=0)
        return false;
        else
        {
            int test = 0x55555555;
            int MaxPowerOfFour = 0x01<<30;
            return MaxPowerOfFour % num ? false:((test&num)==num?true:false);
        }
    }
};
时间: 2024-08-10 15:04:53

判断 一个数是不是 4 的幂的相关文章

如何判断一个数是2的幂

如何判断一个数是2的幂,主要是要找出2的幂次方的数的特点.我们知道,1个数乘以2就是将该数左移1位,而2的0次幂为1, 所以2的n次幂(就是2的0次幂n次乘以2)就是将1左移n位, 这样我们知道如果一个数n是2的幂,则其只有首位为1,其后若干个0,必然有n & (n - 1)为0.(在求1个数的二进制表示中1的个数的时候说过,n&(n-1)去掉n的最后一个1).因此,判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0即可. bool powerof2(unsigned in

如何迅速判断一个数是不是2的幂、3的幂、4的幂?

1.判断n是否为2的幂? ①.任何整数乘以2,都相当于向左移动了一位,而2的0次幂为1,所以2的n次幂就是1向左移动n位.这样,2的幂的特征就是二进制表示只有最高位为1,其他位均为0.那么,我们只要判断一个数的二进制表示只有一个1,那么它就是2的幂. ②.n为整数,则n & (n - 1)可以消除n二进制表示的最低位的1,这个方法可以用来统计一个数二进制中1的个数,当然也可以用来判断是否为2的幂.如下: 1 boolean solution(int n) { 2 return (n & (

快速判断一个数是否是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

判断一个数是否是2的方幂

分析: 2的方幂的二进制表达是一种有规律的数,如:2 = 10,4 = 100, 8 = 1000,等等,也就是说它的二进制表示中只有最高位为1,其余的为0,那么想想,如果把这个数减一的话其二进制就变成了又一个有规律的数,如:2-1=01,4-1=011,8-1=0111,看看,把减一的结果与它们本身想与,是不是为0了.好了,结果出来了. if(n>0&&(n&(n-1))==0) n是2的方幂 判断一个数是否是2的方幂

判断一个数是否为2的幂

判断一个数是否为2的幂 思想 例1. 4的补码为: 00000100 3的补码为: 00000011 4 & 3 = 0 因此 n & n-1 == 0,此数即为2的幂(n > 0) 例2. 4的补码为: 00000100 -4的补码为: 11111100 4 & -4 = 4 因此 n & -n == n,此数即为2的幂(n > 0) 公式 n & n - 1 == 0 (n > 0) 或 n & -n == n (n > 0) 原

Java杂谈之二----怎样判断一个数是水仙花数以及穷举水仙花数

首先明确一下什么是水仙花数 百度说,水仙花数指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身 例如:1^3+5^3+3^3=153 水仙花数只是自幂数的一种,严格来说三位数的3次幂数才能成为水仙花数. 但其实也分一位自幂数,两位自幂数,三位自幂数,四位自幂数等等. 所以鉴于水仙花数的定义的不确定和模糊性 以下代码示例不仅限于三位数的水仙花数,主要涉及的是思想问题. 类名:JavaNarcissus 构造函数:JavaNarcissus() 判断一个数是否为水仙花数:IsNarc

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, 第三个

请编写一个程序,该程序可以接收两个数,并判断两个数是大于、小于、等于?

//作者:janushu //日期:2017/9/20 //功能判断两个数的大小 import java.io.*; public class CompareToNumDemo{ public static void main(String[] args){ try{ //输入流 从键盘上输入一个数 InputStreamReader isr = new InputStreamReader(System.in); //缓存读取一个数 BufferedReader br = new Buffere

判断一个数是否为质数

在软件开发的过程中,很多问题就像是应用题,有很多中解答的方式,但是结果都是一样,然而方式也有更加简单,易懂的. 例如标题所示,判断一个数是否为质数: 1. Static bool IsAdd (int n) { if(n%2!=0) { return true; } else { return false; } } 2. Static bool IsAdd (int n) { if(n%2!=0) { return true: }return false: } 3. Static bool Is