zoukankan      html  css  js  c++  java
  • 位与(&)常用编程技巧

    补充知识:1)正整数的补码与原码相同;

                   2)求负整数的补码:原码 符号位不变,数值位各位取反,最后整个数加1得到补码;

                   3)按位与&的结果是补码与补码运算得到的结果。

     进制转换:1)十进制整数----->二进制(除2取余倒排)

                   2)二进制--->十进制(按权重相乘相加)

                   3)十六进制 <------>二进制(1位对应4位)

    1. int x; x按位表示有多少位1?

    编程中常会用到位编程,若要数出一个数x中有多少位1,可用如下算法:

    int func(int x){
        int count = 0;
        while(x){
            count++;
            x   =  x&(x-1);
        }  
        return count;
    }

    x & (x-1)得到的是消去x最低位的1后的数。

    2.  int x; x中最右边的位1的表示数是多少?

    x & (-x);//得到x最右边位1的表示数

    x & (-x)得到的是x最低位是1的表示数。

    (N-Queens就用到这种技巧)

  • 相关阅读:
    Git使用教程与基本原理和Sourcetree基本使用探微
    微博开发笔记上(未完待续)
    Swift入门
    刀哥之指纹识别biometrics
    iOS面试关于http知识点basic-01-http
    SDWebImageInfo
    runloop
    NSOperation类
    java多线程
    java集合类(二)
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3939023.html
Copyright © 2011-2022 走看看