zoukankan      html  css  js  c++  java
  • 按位与(&)运算的作用

    按位与(&)其功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进制位均为1时,结果位才为1,否则为0 。参与运算的数以补码方式出现。

    1、请实现一个函数,输入一个正数,输出该数二进制表示中1的个数。

      

      这里用到了这样一个知识点:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0 。 那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。

      总结:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0 。

    2、输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。

      解决方法:第一步,求这两个数的异或;第二步,统计异或结果中1的位数。

      

    3、用一条语句判断一个整数是不是2的整数次方。

      解决方法:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其它所有位都是0 。 根据前面的分析,把这个整数减去1后再和它自己做与运算,这个整数中唯一的1就变成0了。

      解答:!(x & (x - 1)

  • 相关阅读:
    temp12
    temp111
    test.c
    vipLogin.c
    services.c
    request.c
    managerLogin.c
    将博客搬至CSDN
    SpringMabatis整合项目mybatis-configuration.xml核心配置
    logback-test.xml配置文件模板
  • 原文地址:https://www.cnblogs.com/Hellorxh/p/13496652.html
Copyright © 2011-2022 走看看