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

c++: what does this insertion expression do and how does it work when passing as a function argument?

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;
}

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

001010 (10)

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

010100 (20)

如果你注意到了,上面的等价于 乘以二;其实左移n位相当于乘以2的n次方!

如果我们对原件进行 >> 1(右移 1 位),我们会得到:

000101 (5)

同样,如果你仔细看,你会发现上面的等价于 除以2! 事实上,正确的移位运算符是左移运算符的逆运算符,所以右移n位相当于除以2的n次方!

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