码迷,mamicode.com
首页 > 其他好文 > 详细

位与(&)常用编程技巧

时间:2014-08-27 12:38:57      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   strong   div   log   amp   sp   on   

补充知识: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就用到这种技巧)

位与(&)常用编程技巧

标签:style   blog   color   strong   div   log   amp   sp   on   

原文地址:http://www.cnblogs.com/Xylophone/p/3939023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!