x>>=1;在C++里面是什么意思
这是一个程序题voidfun(intx){charstr[32];for(inti=30;i>=0;i--){if(x%2)str[i]='1';elsestr[i]='...
这是一个程序题
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++里面是什么意思 展开
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++里面是什么意思 展开
3个回答
展开全部
>>是右移运算符。 <<是左移运算符
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 中状态的任意组合。
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 中状态的任意组合。
展开全部
x >>= 1 等同于 x = x/2;
这是位运算, >>左移运算,<< 右移运算
x >> n 等同于 x / (2^n)
x << n 等同于 x * (2^n)
当然了,要注意类型所占内存的大小,以防溢出
这是位运算, >>左移运算,<< 右移运算
x >> n 等同于 x / (2^n)
x << n 等同于 x * (2^n)
当然了,要注意类型所占内存的大小,以防溢出
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运算符重载,意思是x = x >>1
x>>1也就是x的二进制右移一位
类似的有x+=1,也就是x = x+1
都是运算符重载
x>>1也就是x的二进制右移一位
类似的有x+=1,也就是x = x+1
都是运算符重载
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询