在c里面 x*=a+b运算是怎么算的啊?还有x&x-1 x=x&(x-1)

 我来答
缑刚偶怀蕾
2020-02-01 · TA获得超过1173个赞
知道小有建树答主
回答量:2606
采纳率:100%
帮助的人:14.3万
展开全部
根据运算符的优先级,*= 属于赋值运算符,优先级比 + 低
所以 x*=a+b 相当于 x*=(a+b) ;
*= 运算符懂吧,a*=b 相当于 a = (a*b);
按位与运算符“&”的优先级低于减法运算法,所以 x&x-1和x&(x-1)是一样的;
& 运算是按位与,将 x 和 x-1 都转化为二进制形式,一位一位的进行与运算,
1&1 = 1; 1&0 = 0; 0&1 = 0; 0&0 = 0;
例如x = 45;
101101 x
101100 x-1
& -----------------------
101100 x&(x-1)
x=x&(x-1) 就是将x&(x-1)的结果在赋值给x(x原来的值被覆盖掉了).
另外,你有没有发现,x为奇数时,x&(x-1) = x-1
x为偶数时,x&(x-1) = x-2
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式