a&(-a)在C++里面是什么意思?有那些应用?

做逆序对模板的时候遇到的问题,不知道a&(-a)在代码里是什么用。。。。。
求解答。

对于是用补码的环境,a和-a相与可以获得a最低的非0位。
-a就是a取反加1
比如a的二进制是 ??????10000,取反就是??????01111,加1就是??????10000。前面?的部分是和原来a相反的,相与必然都是0,所以最后整体相与的结果就是00000010000。追问

for(;j0;k-=(-k)&k)
s+=c[k];
ans+=i-s;
如上,求解逆序对的时候获得最低非0位用什么作用?(树状数组求逆序对 lowbit)

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-10-12
先负运算再进行与运算,应用同加减乘除

a&(-a)在C++里面是什么意思?有那些应用?
对于是用补码的环境,a和-a相与可以获得a最低的非0位。-a就是a取反加1 比如a的二进制是 ???10000,取反就是???01111,加1就是???10000。前面?的部分是和原来a相反的,相与必然都是0,所以最后整体相与的结果就是00000010000。

C++中A(A&)这个什么意思
A&是A类型对象的一个引用,A(A&)是以这个引用为参数的构造函数,一般用于复制。

c++中 & (按位与),怎么运算。举几个例子
&:在C++中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。a&b表示a和b执行按位与运算。&后跟一个变量。每个变量对应一个存储空间块。每个存储空间都有一个数字,即地址,&变量名表示取出该代码,而变量名表示取出该编号对应的存储空间中的值。系...

在c++里&代表什么?经常在图中这种情况里看到但是不知道怎么用_百度知 ...
在 C++ 语言中,& 运算符有三种含义:(1) 位与运算符,如:int a = 2 & 3; \/\/ 按二进制位与运算,10 & 11 = 10, 所以结果为 10 进制的 2;(2) 取地址运算符,意为取某个变量的地址;(3) 用于定义变量的引用,如:int a = 100;int &b = a; \/\/ 引用必须在定义的时候...

C++ 右值概述
具体的含义是,对于 test() 函数返回的值,我们直接使用 a 变量来接管(直接指向返回的 Person 类实例),test 函数里创建的 tmp 临时变量也就不需要析构了,直接交给主函数的 a 变量继续使用。临时变量的拷贝构造也就省去了。在现代编译器环境下,对于上面的这个过程,如果不添加-fno-elide-...

关于c++中的&在参数中的用法
&在C语言中有取地址的意思,但在C++中增加了引用的意思,“引用”。(1)void a(B &)只有在函数声明中才可以省略形参名,这是C的规定;(2)引用在C++中的作用是传引用时,在函数中使用时,就直接传的是实参,不用在函数体内去构 造实参的一个副本,这样提高了效率,因此也达成了直接修改实参...

C++中&a是什么意思
1、引用:引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。2、按位与:&可以表示逻辑运算...

请教大虾 c++中A(A &a){} 是神马意思
估计这个A是个类名,然后这个是自定义的构造函数,这些书上都有说明,请好好看书,不要没有基础而去乱番代码 这样只会浪费时间。

a&=b,c++中是什么意思
&= 是一个自反运算,这句的意思是:a = a & b;其中 & 是位与运算符

c++成员函数后的&符号是什么意思?
表示调用该成员方法的对象必须是具名变量,不能是匿名变量(临时)变量。比如下面这样调用是对的:A a;a.test();下面这样调用是错的:A().test();

相似回答