zoukankan      html  css  js  c++  java
  • [LeetCode]231. Power of Two判断是不是234的幂

    /*
            用位操作,乘2相当于左移1位,所以2的幂只有最高位是1
            所以问题就是判断你是不是只有最高位是1,怎判断呢
            这些数-1后形成的数,除了最高位,后边都是1,如果n&n-1就可以判断了
            如果是2的幂,&的结果是全0
             */
            if (n<=0) return false;
            return ((n&(n-1))==0);

    划重点:

    一个数*2,出相当于左移一位

    2.判断是不是3的幂,没啥用的一道题

    public boolean isPowerOfThree(int n) {
            /*
            不能用循环和递归    感觉不看答案是做不出来
            3的幂都可以被int中最大的3的倍数整数
             */
            return n > 0 && (1162261467 % n) == 0;
        }

    3.判断是不是4的幂

    重点就是记住:0x55555555,8个5这个16进制的二进制是:奇数位1,偶数位0,用于提取出一个数的奇数位

    /*
        2的幂中有些不是4的幂,哪些呢?多写几个不难发现
        2的幂特征是:最高位是1,后边的是0
        而4的幂除了上边的特征,还有最高位必须是从后边数第奇数位
        比如8的二进制是1000,从后边数第4位是最高位,不是4的幂,同理还有32
        判断最高位是不是偶数位,用0x55555555&上就行,因为这个数的二进制表示
        是奇数位为1,偶数位为0
         */
        public boolean isPowerOfFour(int num) {
            return num>0&(num&(num-1))==0&(num&0x55555555)!=0;
        }
  • 相关阅读:
    php 压缩文件 zip
    php 创建返回结果配置文件 实例
    php 生成xml文件
    php 获取读取文件内容
    基于JAVA语言的多线程技术
    Java HTTP请求
    TCP与UDP
    VC6.0 调试.dll文件
    [JNI] Java 调用 C++ dll
    HTTPS与SSL
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8478279.html
Copyright © 2011-2022 走看看