x>>=1;在C++里面是什么意思

这是一个程序题
void fun(int x)
{ char str[32];
for(int i=30;i>=0;i--)
{ if(x%2)
str[i]='1';
else
str[i]='0';
x>>=1;
if(!x)
break;}
str[31]='\0';
cout<<&str[i]<<endl;
WriteFile(&str[i]);
x>>=1;在C++里面是什么意思

>>是右移运算符。 <<是左移运算符
x >>= 1 等同于 x = x/2;
这是位运算, >>左移运算,<< 右移运算
x >> n 等同于 x / (2^n)
x << n 等同于 x * (2^n)
当然了,要注意类型所占内存的大小,以防溢出

二进制位移操作。当 x 为 1 时,1 转为二进制还是 1,向左位移变为 10,然后与 1 进行二进制或运算就是 11,二进制 11 其实就是十进制的 3。1 << 1 等于 00000001 << 1 等于 00000010 等于十进制 22 << 1 等于 00000010 << 1 等于 00000100 等于十进制 43 << 1 等于 00000011 << 1 等于 00000110 等于十进制 64 << 1 等于 00000100 << 1 等于 00001000 等于十进制 8也不难理解向左移动多位。如向左移 2 位 00001110 << 2。00001110------------00111000同样 C 语言中还有还有右移运算符 >>,表示按二进制位向右移动。而按位或运算符则是将两个数字的二进制值的每一位进行或运算。1 | 1 等于 00000001 | 1 等于 00000001 | 00000001 等于 00000001 十进制 12 | 1 等于 00000010 | 1 等于 00000010 | 00000001 等于 00000011 十进制 33 | 1 等于 00000011 | 1 等于 00000011 | 00000001 等于 00000011 十进制 34 | 1 等于 00000100 | 1 等于 00000100 | 00000001 等于 00000101 十进制 5或运算也就是二进制的每一位分别进行运算,如果两个都是 0 那么此位为 0,至少有一个数该位为 1,或运算结果就是 1。可以看得出来,任意数与自身进行或运算还是这个数。4 | 4 等于 00000100 | 00000100 等于 00000100 十进制 4。一个简单的按位或运算符示例:0100111000010111------------01011111上图表示的是 78 | 23 = 95。事实上你从十进制你看不出来有任何规律的,二进制与、或、异或运算也只有在二进制或者十六进制表示才能看出来一些规律。当然这个规律不是最重要的,重要的是在编程中这种方式的优越性就是使用每一位 0 或 1 表示一个值的状态,这样即使是一个 16 位整数就可以用来表示 16 中状态的任意组合。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-29
x >>= 1 等同于 x = x/2;
这是位运算, >>左移运算,<< 右移运算

x >> n 等同于 x / (2^n)
x << n 等同于 x * (2^n)

当然了,要注意类型所占内存的大小,以防溢出本回答被提问者采纳
第2个回答  2012-02-29
运算符重载,意思是x = x >>1

x>>1也就是x的二进制右移一位

类似的有x+=1,也就是x = x+1

都是运算符重载

x>>=1;在C++里面是什么意思
>>是右移运算符。 <<是左移运算符 x >>= 1 等同于 x = x\/2;这是位运算, >>左移运算,<< 右移运算 x >> n 等同于 x \/ (2^n)x << n 等同于 x * (2^n)当然了,要注意类型所占内存的大小,以防溢出 二进制位移操作。当 x 为 1 时,1 转为二进制还是 1,向左位移变...

c++x>>=1是什么意思?
>>是右移运算符。假设x=5,那么x的二进制为0101,x>>1表示x右移1位,即把最右边一位的1删掉,变为010,此时x=2;仍然设x=5,二进制0101,x>>2表示x右移2位,把最右边两位的01去掉,变为01,此时x=1。x>>=1等价于x=x>>1,跟x+=1等价于x=x+1是一个道理 ...

x>>=1是啥意思??是在c++里遇到的望解答
x=x>>1,即将x的值右移一位。

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

c++中!x代表什么?求解
回答:C++中有布尔类型bool,像int一样,可以定义一个变量.如:int n = 0;bool b = false; bool只有两个值:true 和false; 0等效于false;其他一切非0值都是true; 你这里用!x,其实就是把(!x)作为一个bool值。 如果x为0,(!x)就是非0,是true; 如果x不为0,(!x)就是0,是false. C++中的w...

用逻辑表达式表示1<=x<30在c++ 咋表示
用逻辑表达式表示1<=x<30在c++ 咋表示 >>是右移运算符。 <<是左移运算符 x >>= 1 等同于 x = x\/2;这是位运算, >>左移运算,<< 右移运算 x >> n 等同于 x \/ (2^n)x << n 等同于 x * (2^n)

C++中“>>”符号什么意思
2进制运算,按位右移运算符。例如:int x=7,y;y = x >> 1; 右移1位. x 2进制 是 0000 0111, 右移1位: 0000 0011 变10进制 3 ">>" -- 字符串常量。printf(">>");输出字符串: >>

C++中>>是什么运算
位的右移操作运算符,每右移以为相当于乘以2 比如 unsigned int i = 1;i >>= 1;i的结果就变成了 1 x 2 = 2.

在c++中为什么用 1<=x<=10表示x大于等于1小于等于10
因为c里面运算符右结合特性,所以你这样写等效于1<=( x<=10),如果x> 10,那么后面x<=10为假,即1<=0,这个不成立,也就是不满足条件了,如果x<=10,那么这个式子就为真。即x<1的话,这个式子也成立,而不能表示出x>=1这个关系

C++中>>是什么意思
与变量在一起的时候表示左移操作,相当于乘以2。关于C++中各种符号的含义:“&”:引用声明符;地址运算符,赋值给指针;“&&”:逻辑与运算;“->”:指针操作符号;“^”:异或运算;“=”:赋值;用于分隔变量说明和初始化表;“==”:运算符,等于的意思;“!=”:运算符,不等于的意思;“...

相似回答