c ++:这个插入表达式做什么以及作为函数参数传递时它如何工作?

时间:2015-03-09 00:57:47

标签: c++ bitwise-operators

binary(number >> 1)的含义是什么,以及它如何在以下代码中起作用?有人可以向我详细解释一下吗?谢谢!

#include <iostream.h>

void binary(int);

int main() {
    int number = 3;
    cout << number << endl;
    binary(number);
}

void binary(int number) {
    if(number <= 1) {
        cout << number;
        return;
    }
    int remainder = number%2;
    binary(number >> 1);  //How does this work exactly?   
    cout << remainder;
}

1 个答案:

答案 0 :(得分:2)

<< and >>运算符是位移运算符;他们根据数字的二进制表示更改值;一个例子将澄清:

001010 (10)

如果我们<< 1(左移1位),那么我们得到:

010100 (20)

如果您注意到,上面等效 乘以2 ;实际上,向左移位n位相当于将2乘以第n次幂!

如果我们>> 1(右移1位)到原始,我们得到这个:

000101 (5)

同样,如果你仔细观察,你会注意到上面的相当于除以2!实际上,右移操作符是逆运算符,因此右移n位相当于除以2到n次幂!

此外,void main()是完全错误的,所以不要使用它。 <iostream.h>应替换为<iostream>,因为前者是在标准ISO C ++之前使用的。