请教c语言中:x = x & (x-1),这段代码代表什么意思啊?&是取地址运算符,这句代码怎么解释?

如题所述

x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0
&是与运算符
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-22
&在这里作运算符,假设x=5,则x=5&4,分别取5和4的二进制进行&运算,5的二进制是101,4的二进制是100,然后右对齐,每一位进行&运算,从右到左,1&0=0,0&0=0;1&1=1;所以5&4的二进制为100,也就是4

请教c语言中:x = x & (x-1),这段代码代表什么意思啊?&是取地址运算符...
x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0 &是与运算符

x &= x-1c语言中什么意思
x & = x-1c;等价于 x = x & (x-1);x - 1即进行十进制的减法,如x 为十进制的30,则x-1的结果为十进制的29 如果结果用2个字节表示则结果为:00 00 00 00 00 01 11 01 又因为x 是30其二进制表示为:00 00 00 00 00 01 11 10 & 是为运算的与运算符只有对应位置上全为1结果...

c语言x&(x-1) 是什么意思
所以9998除了最后一位是0以外,其他位数都和9999的相同,这样除了最后一位,其他位数只可能有两种运算:1&1=1和0&0=0,而最后一位进行的运算是1&0=0,这样,得到的结果就与9998的二进制数是一样的了,换言之 9999&9998=9998

c语言中取地址符和*有什么区别?
1. 符号含义不同:在C语言中,&是取地址运算符,它用于获取一个变量的地址。例如,&a表示变量a的地址。2. 用法不同:在声明中,如int x; x是一个整型量。在语句中,&x表示整型量x的地址。而*是一个指针运算符,用于声明指针变量。例如,int *p; p是一个指向整型量的指针。3. 指向不同:*...

c语言中&可以表示什么运算?
&在C语言中可能表示两种运算符。1、如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。2、如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位...

c语言中"&取地址"是什么意思?
依照我的理解:& 取地址 就是找到那个分配的内存空间 然后去那块内存里 找我们需要的变量 我这可能是用了oc的解释 因为对c不是很熟悉。&是取地址运算符,&a为变量a的地址。系统就会在内存中分配一个空间,*a的值就是变量a的值3; 定义一个指向整型数据的指针,作用与&相反,它...

&在c语言中是什么意思?
1、取地址符& 一般用C语言定义一个变量,这个变量都会对应一块存储空间,这个存储空间有一个地址。如果你想过得这个地址,就要使用&符号。&后面跟变量名,就可显示该变量在内存中的地址。2、位运算符& 在这里&表示按位与,表示参加运算的两个数据,按二进制位进行“与”运算。两位同时为“1”,结果...

C语言中,&怎么理解?
&在C语言中可能表示两种运算符。如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位按位与...

初学C语言,*是取指针目标运算符,&是取地址运算符,它们有什么区别?通 ...
1. &是取地址运算符,它可以用来获取任何变量的地址。例如:定义一个整型变量i,并用指针pi来存储i的地址,可以写成`pi = &i;`。同样,可以定义一个指向指针的指针ppi,并将pi的地址存储在其中,写成`ppi = π`。2. *是取指针目标运算符,它用于获取指针变量所指向的地址内的值。例如,如果...

在C语言里面, & 是什么 意思, 最好能够举例子说明用法及作用_百度知 ...
1.取地址 比如:main(){ int n;scanf("%d",&n);\/\/因为变量在计算机中是通过地址存取的,所以输入一个数到他的地址,就等于给他赋值了.printf("%d",n)} 2.按位取与(2进制下)比如:1&1=1;1&0=0;0&1=0;0&0=0;

相似回答