1,按位异或(^)
a^b,
如果a,b值相同返回0
如果a,b值不同则返回1.
2,
(l+r)>>1,的意思是除以2.
你看这个是二分是不是很明显了?
同理(l+r)<<1,的意思是乘2.
然后还有一个问题就是
如果你2>>1+1,这样会出错的,因为位运算的优先级和普通运算的优先级不一样的。
会先1+1;
但是人家说这个可以写成(2>>1|1),
额,你也知道按位或对吧。有一则一。这个还是挺简单的。