c语言中 x=x&(x-1)实现什么功能?大侠帮忙

如题所述

将x的二进制值中,最后一个1置0,其它不变。即达到从x的尾部,删除一个1的效果。

二进制的减法规则中可以得知,在做x-1时,当把x写作
A1B
的形式,其中A为随意值,B为若干个0,可能为0个。
这时x-1的值,实际上是
A0C
的形式,其中A值不变,C为与B相同位数的1.
这样
x&(x-1)的结果,根据按位与的特性,当操作数一方为0时,结果为0,于是
x&(x-1) = A0B
对比x原始值A1B,x&(x-1)即把最后一个1改成0.
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-18
x-1后再和x进行“与”运算,结果赋给x
第2个回答  2010-08-18
算x的二进制中bit1的个数用
int count = 0;
while (x)
{
x=x&(x-1);
count++;
}本回答被提问者采纳
第3个回答  2010-08-18
可以用来判断x是不是2的n次方的值

c语言中 x=x&(x-1)实现什么功能?大侠帮忙
将x的二进制值中,最后一个1置0,其它不变。即达到从x的尾部,删除一个1的效果。二进制的减法规则中可以得知,在做x-1时,当把x写作 A1B 的形式,其中A为随意值,B为若干个0,可能为0个。这时x-1的值,实际上是 A0C 的形式,其中A值不变,C为与B相同位数的1.这样 x&(x-1)的结果,...

x = x&(x-1);这个是按位与的运算吗?求解释程序运行结果
题目的意思是X从9999开始按照按位与缩小,依次缩小直到x=0为止!就会跳出循环!这里循环运行了8次才能得出x=0的结果,所以countx=8!

...#define MA(x) x*(x-1) main(){ int a=1,b=2; printf(“%d\\n_百...
define MAX(X) X,在编译时候,只做简单替换。比如说 在main()函数中,int x=MAX(a+b)*MAX(a+b),c编译器在编译的时候,将MAX替换,变成a+b*a+b。

求助C语言高手,跪求一个关于成绩统计程序.希望哪位大侠帮帮忙,感激不...
void output(double score[200],int x)\/\/顺序输出学生成绩{ int i=0; if(x!=0) while(i!=x) { printf("第%d个人的成绩为%lf\\n",i+1,score[i]); i++; } else printf("数据为空,请先输入数据\\n");\/\/容错,当数组中没有数据时提示用户先输入数据}void max(double score[200],int x)\/\/...

C语言中 #define M(x) x*(x-1)什么意思
宏定义,就是说 M(X) 就是 X*(X-1)了。在代码中需要进行这个运算的地方就可以用M(X)代替,岂不方便啊?int x = 3;int y = M(x); \/\/ 相当于int y = x*(x-1) = 3 * ( 3 - 1) = 6; 这样不就省事了嘛 ps:虽然只是一个宏定义 没有错。但是对于一个好的代码来说这个...

if(!(x&1))和if(!(x%i))是什么意思?C语言
在C语言里:if(!(x&1))x和1的二进制“与”结果为0,则执行下面的代码 if(!(x%i))x除以i的结果如果等于0(就是说如果x是i的整数倍),就执行下面的代码

C语言中 x & -x 表示什么意思?
逻辑判断,叹号是非的意思,x是各变量,如果x为零那么!x就是1,相反是0。若X是“0”(为假),则“!x”就不是零(为真),则里面为真,进入if下的大。若X不是“0”(为真),则“!x”就是零(为假),则里面为假,跳过if下的大。

c语言中&起什么作用
但是后面的abc将在读取之后抛弃,不赋予任何变量(例如这里的字符数组b)在printf中使用,表示用后面的形参替代的位置,实现动态格式输出。例如:printf("%*s",10,s);\/意思是输出字符串s,但至少占10个位置,不足的在字符串s左边补空格,这里等同于printf("%10s",s);\/ ...

C语言!下面C语言void action1(int,int),action2(int,int);表达什么意思...
自定义函数函数声明,当被调用函数在主函数之后时必须提前声明函数!望采纳

C语言中while(x--)是什么意思?
首先了解下优先级与结合性 1.--为自减运算符,第二优先级,自右至左 2.x--这个表达式:先使用x的值,接着x=x-1;整个表达式的值为x 看 while(x--){ 循环体 } 首先 ①判断x--这个表达式的值是否为0(即x的值),如果为0,不执行循环体 但仍然执行x=x-1;例如:int x=0; 则不执行循环体,...

相似回答