【发布时间】:2020-11-28 19:55:17
【问题描述】:
看下面的代码:
#include <stdio.h>
int main()
{
int num, sum;
scanf("%d", &num);
sum = num - (num&-num);
printf("%d", sum);
return 0;
}
sum = num - (num& - num) 行以二进制格式返回给定数字的值,没有最后一个 1。例如,如果 num 等于 6(110),它将给出没有最后一个 1 的值。在这种情况下,100 等于 4。
我的问题是&- 是如何工作的,我们如何在八进制数字系统中做同样的事情?
【问题讨论】:
-
num - (num & (-num));更清晰。 -
您从哪里了解到
&-“运营商”? -
@Jabberwocky - 可能只是
-->operator 的表亲。 -
@Jabberwocky 我在土耳其国家信息奥赛上看到了。