
a&(-a)在C++里面是什么意思?有那些应用?
2个回答
展开全部
对于是用补码的环境,a和-a相与可以获得a最低的非0位。
-a就是a取反加1
比如a的二进制是 ??????10000,取反就是??????01111,加1就是??????10000。前面?的部分是和原来a相反的,相与必然都是0,所以最后整体相与的结果就是00000010000。
-a就是a取反加1
比如a的二进制是 ??????10000,取反就是??????01111,加1就是??????10000。前面?的部分是和原来a相反的,相与必然都是0,所以最后整体相与的结果就是00000010000。
追问
for(;j0;k-=(-k)&k)
s+=c[k];
ans+=i-s;
如上,求解逆序对的时候获得最低非0位用什么作用?(树状数组求逆序对 lowbit)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |