zoukankan      html  css  js  c++  java
  • 位运算————2的幂

    注意:

    整数包括负数,别忘了负数!

    2的幂肯定是大于等于1的,所以,负数全部false!!

    方法1:

    2的幂说明用二进制表示的时候,只有一个1。

    1 class Solution {
    2 public:
    3     bool isPowerOfTwo(int n) {
    4         if(n<=0) return false;
    5         bitset<32> res(n);
    6         if(res.count()==1) return true;
    7         else return false;
    8     }
    9 };

    方法二:

    利用与操作,若一个数n是2的幂次方,则2进制表达式一定为某一位为1,其余为0。则n-1则会变成后面的数全部变成1,原来1的位置变成0

    例子:n=16的2进制(000010000),则n-1=15的二进制(00001111),则(n&n-1)=0。

    注意:位运算优先级低于加减运算符。所有是先加减再与的,不用加括号了。

    注意:等于==优先级是高于位运算符的,所以要在==之前加括号!!

    1 class Solution {
    2 public:
    3     bool isPowerOfTwo(int n) {
    4         if(n<=0) return false;
    5         if((n&n-1)==0) return true;//注意运算符的优先级
    6         else return false;
    7     }
    8 };
  • 相关阅读:
    Anniversary party
    1358. 分割树
    我在 impress.js 中学到的小套路
    我对 impress.js 源码的理解
    CSS transition 过渡 详解
    CSS 2D转换 matrix() 详解
    JS 动画基础
    JS 瀑布流布局
    JS 下拉菜单
    JS Resizable Panel 练习
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11050702.html
Copyright © 2011-2022 走看看