c++中,k&=k-1是什么意思啊?
答案:4 悬赏:70
解决时间 2021-01-23 21:41
- 提问者网友:棒棒糖
- 2021-01-23 04:15
c++中,k&=k-1是什么意思啊?
最佳答案
- 二级知识专家网友:纵马山川剑自提
- 2021-01-23 04:47
C++中,&符号有两个基本作用。一是取地址;第二个是按位与运算,就是AND运算,是二进制运算。这里显然不是取地址,而是后者。比如,k=23时,化成二进制就是10111,然后原式等价k = k & (k-1),也就是10111&10110,结果等于10110,就是22.
我用程序验证过。
我用程序验证过。
全部回答
- 1楼网友:摆渡翁
- 2021-01-23 07:56
k = k & (k-1);
- 2楼网友:由着我着迷
- 2021-01-23 06:38
k=k+1; => k+=1;
k=k-1; => k-=1;
k=k*1; => k*=1;
k=k/1; => k/=1;
k=k&1; => k&=1;
k=k-1; => k-=1;
k=k*1; => k*=1;
k=k/1; => k/=1;
k=k&1; => k&=1;
- 3楼网友:骨子里都是戏
- 2021-01-23 05:33
在这里&是按位于运算符,k&=k-1;和a+=1形式一样,只是运算方法不一样
按位与运算符 &
按位与运算符是双目运算符,其功能是将参与运算的两操作数各自对应的二进制为进行于操作。只有对应的两个二进制位均为1 是,结果对应的二进制位才为 1,否则为0.例如:表达式“21&18”的计算结果是16(即二进制数10000),因为:
21用二进制表示就是:0000 0000 0000 0000 0000 0000 0001 0101
18用二进制表示就是:0000 0000 0000 0000 0000 0000 0001 0010
按位与所得结果是:0000 0000 0000 0000 0000 0000 0001 0000(21和18左起第五位都是1,对应出结果 1)
按位与运算符 &
按位与运算符是双目运算符,其功能是将参与运算的两操作数各自对应的二进制为进行于操作。只有对应的两个二进制位均为1 是,结果对应的二进制位才为 1,否则为0.例如:表达式“21&18”的计算结果是16(即二进制数10000),因为:
21用二进制表示就是:0000 0000 0000 0000 0000 0000 0001 0101
18用二进制表示就是:0000 0000 0000 0000 0000 0000 0001 0010
按位与所得结果是:0000 0000 0000 0000 0000 0000 0001 0000(21和18左起第五位都是1,对应出结果 1)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯