LeetCode-342. Power of Four

问题:https://leetcode.com/problems/power-of-four/?tab=Description
Given an integer (signed 32 bits), write a function to check whether it is a power of 4.
Example:Given num = 16, return true. Given num = 5, return false.
给一个整数,写一个函数判断它是否是4的倍数。
例子:16,返回true。 5,返回false。
分析:首先判断num是否为2的幂数。利用num&(num-1)=0来判断。接下来再利用一个数0x55555555,也就是01010101……01010101,奇数位全为1,偶数位全为0。如果num是4的倍数,则num可能为4,16,64,256…分别是第3位是1,第5位是1,第7位是1,第9位是1……,所以num&0x55555555=1。若num只是2的幂数,不是4的幂数,则num可能为2,8,32,第2位是1,第4位是1,第6位是1,偶数位是1,所以与0x5555555与的结果是0。
参考C++代码:

class Solution {
public:
    bool isPowerOfFour(int num) {
        int tem=0x55555555;
        if(num&(num-1)) return false;
        else if(num&tem) return true;
        else return false;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值