高手请看,这个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什么意思吗

高手请看,这个c++函数中的 x》=1是什么意思
>>是位运算符,假如x=9,用二进制表示就是01001,然后右移一位,变成00100,是十进制的8.下面给你介绍一下位运算法符 一、位运算符C语言提供了六种位运算符:& 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 用法:1.按位与运算符 & 按位与运算符是双目运算符,其功能是将...

若已定义,int x[4]={2,1,3};则元素x[1]的值为1 请高手解释下为什么
也就是说x[0]=2,x[1]=1,x[2]=3,x[3]=0;

请C++高手看一下一个程序的问题,语法错误一个,在rootx函数的定义中的...
函数名与变量名重复。程序有一个 x 函数,还有一个 x 变量。你要么更改函数名,要么更改变量名。

C++语法高手进
第三是传递一个代表1和0集合的字符串参数,还可以标记字符串的范围,如string bitval(“1111110101100011010101”);bitset<32> bs(bitval, 6, 4);则bs的第1和第5位被初始化为1;如果去掉指定字符串范围的第三个参数,则范围是指定的位置开始一直到字符串的末尾。而函数to_string和to_ulong则把bitset对象转换为字...

c++中函数的参数中有...是什么意思?高手请进(
...是省略,表示还可以有别的参数,也可以没有.c++可以有多个同名函数,区别在参数个数不等.__cdecl 是一种调用方式,其它方式有__stdcall, __fastcall等.cdecl 调用建立的可执行码体积大,它包括建立清除堆栈等代码...其他部分,相信你都懂.

求c++高手解释一下程序的输出结果 ,谢谢!
<<"Point : ("<<p.x(x)<<", "<<p.x(y)<<")"<<endl;}\/\/需要说明的是,你的这个函数的第二个p.x(y)应该是写错了,应该为p.y(y)按照你的程序,此时l=0,则pt[0].x1=1,pt[0].y1=0,之后执行l++,则l=1;再输入:3,3 执行:if(a == b) ShowPoint(pt[l].setPoint(a,...

...中看到有符号←→,请问下这两个符号代表什么意思?
交换的意思!

求高手帮忙解决下面这个C++中的一个题目。看俺的代码哪里有错...
1.求个位数,直接用n%10就可以了,你那样子是求的最高位的值 2.既然你已经定了个位为7,直接给m赋7就可以了吧。3.你上面那样子算的时候,最后退出第一个while循环的时候,n是为0的,下面不能用这个n计算,你若是不断的用n\/=10,开始应该用个变量保存这个n的值 4.还有在main中,不能单单...

这是一个C++二级考试的题,请高手指教一下
得到24,并且该表达式返回第二个表达上的值,也就是24,因此x==24。同理可得B中,z==8,x==24,y==24 C中x==8 y==8 z==8 D中可以把.x=(y=z=8)看成是表达式1,4*6看成是表达式2,因此整个语句x=(y=z=8),4*6;的返回值是24..所以先执行表达式1得x==8 y==8 z==8 ...

c++高手,帮我看一下下面的语句是什么意思?
acdbHostApplicationServices()->workingDatabase();acdbHostApplicationServices()是个函数啊,这个函数返回一个指针,而且返回的这个指针有一个叫workingDatabase的函数啊,这个函数返回一个AcDbDatabase的指针

相似回答