zoukankan      html  css  js  c++  java
  • 判断一个数X是否是2^N次方

    用一个表达式,判断一个数X是否是2^N次方,不可用循环语句。

    解析:

    如果一个数是2^N,那么该数的二进制表示中只有一个1,其他位均为0.

    由于X和X-1做与运算,即X&(X-1)能消掉X中的一个1,若结果为0,则表示X中有且仅有一个1,

    那么X是2^N。

    故表达式为:!(X&(X-1))

    下面代码:

    int f(int x,int y)

    {

          return (x&y)+((x^y)>>1)

    }

    (729+271)=

    解析:这道题如果使用本办法来求解,就都转化成二进制然后按位与。但是这样的做法显然不是面试官所期待的。

    仔细观察一下题目,x&y是取相同的位与,这个的结果是x和y相同位的一半,x^y是取x和y的不同位,右移相当于除以2,

    所以这个函数的功能是取二个数的平均值。(729+271)/2=500.

  • 相关阅读:
    ES6入门详解(二) 解构赋值
    python 入门简述
    webpack4x 简述
    ES6入门详解(一) let const
    关于HTML的简述
    按照in条件排序
    Oracle 优化效率
    input输入框校验
    <a>标签操作
    svn安装
  • 原文地址:https://www.cnblogs.com/yanglf/p/2751422.html
Copyright © 2011-2022 走看看