首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

x = x&(x-1) 何解解决方法

2012-03-09 
x x&(x-1) 何解如题[解决办法]最右边为1的bit位消掉[解决办法]位运算符,如果x等于8就是二进制x 1000 &

x = x&(x-1) 何解
如题

[解决办法]
最右边为1的bit位消掉
[解决办法]
位运算符,如果x等于8
就是二进制
x = 1000 & 111;
结果为0
 
[解决办法]
+++++ 位操作符

探讨
位运算符,如果x等于8
就是二进制
x = 1000 & 111;
结果为0

[解决办法]
&是按位与, 就是x同(x-1)按位与,再把值赋给x。
关于&:
(A & B) 
A=170 0000 0000 1010 1010
B=75 0000 0000 0100 1011
-------------------
C 0000 0000 0000 1010
A 、B、C为整数。 C的值:为10


[解决办法]
这种方法可以用来求一个十进制数 转换成二进制后有多少个1

C/C++ code
int comput(int tmpn){   int tmpc=0;   while(tmpn>0)   {     tmpc++;     tmpn=tmpn&(tmpn-1)    }  return tmpc;}
[解决办法]
x = x&(x-1) 

a = x;
b = x-1;
x = a&b;

&操作,二进制运算,LS说的是特例,LZ还是需要懂&操作
[解决办法]
x=x&(x-1); 可以用来求出x是否为2幂次方数;当&的结果为0时,x原值是2幂次方数,否则就不是2幂次方数;
如x=4时 4: 0000 0100
& 3:0000 0011
得出结果为0 ,是2幂次方数;
x=5时, 0000 0101
0000 0100
得出结果为1,即非2幂次方数;

[解决办法]
从右向左数,找到第一个1,把1后面的所有的数字都变为0。如x=1000110,x&(x-1)=1000100就是把x右边的第一个1后面的数变为0(包括1)。如果10000的话,结果就是00000了。哈哈
[解决办法]
楼上正解。。。
[解决办法]
这是用来判断一个数是否是2的N次幂,如果x = x&(x-1)的结果为0则说明x是2的N次幂,否则不是
[解决办法]
x=2&1;
x==0;

x=3&2;
x==2;

X=4&3;
x==0;

X=5&4;
x==4;

x=6&5;
x==4;

x=7&6;
x==6;

x=8&7;
x==0;

x=9&8;
x==8;

x=10&9;
x==8;

x=63&62;
x==62;

x=135&134;
x==134;

x=139&138;
x==138;

从规律上来看,应该是求偶数。
[解决办法]
x&(x-1)就是让最低位等于0,也就是说x&(x-1)的结果肯定是偶数。
[解决办法]
《Hackers Delight》

热点排行