高手请看,这个c++函数中的 x》=1是什么意思

void fun(int x)
{
char str[32];
int i;
for(i=30;i>=0;i--) //计算二进制
{
if(x%2)str[i]='1'; //求余,如果余不为零字符串str第i位为1
else str[i]='0'; //否则为0
x>>=1;
if(!x)break;

}
str[31]='\0'; //串加尾符
cout<<&str[i]<<endl;

x>>=1;
>>是位运算符,假如x=9,用二进制表示就是01001,然后右移一位,变成00100,是十进制的8.下面给你介绍一下位运算法符
一、位运算符C语言提供了六种位运算符:

& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
用法:
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)
与上述方法类似可得出 | 和^ 的结论,即:
2.按位或运算符“|”是双目运算符。其功能是将参与运算的两操作数各自对应的二进制位进行或操作。只有对应的两个二进制都是0 是,结果对应的二进制位才是0,否则为1.例如表达式“21|18”的值是23(即二进制数10111)。
3.按位异或运算符“^”是双目运算符。其功能是将参与运算的两操作数各自对应的二进制为进行异或操作。只有对应的两个二进制位不相同是,结果对应的二进制唯才是1,否则为0.例如表达式“21^18”的值是7(即二进制数111).
4.按位非运算符~是单目运算符。其功能是将操作数中的二进制位0变成1,1变成0.例如,表达式“~21”的值是无符号整型数0xffffffea(十六进制)。
5. 左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
6. 右移运算右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
例子
void main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-09
即为:
x=x>>1;
属于C语言中的位操作,x右移一位,作用是使x除以2,相当于x/=2或x=x/2;
第2个回答  2009-09-09
x》=1是向右移一位并赋值给x,和+=类似的。
第3个回答  2009-09-09
你知道x+=1什么意思吗
相似回答