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

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

最佳答案

<< 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++ 之前使用。

关于c++:这个插入表达式是做什么的,当作为函数参数传递时它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933765/

相关文章:

c - 是否有更简单、更少机器级的表达方式或与 (i & (1 << j)) 相同的方式?

c++ - (目标-)C++ 模板特化上的重复符号

c++ - 定义/使用从预设组件构建的类(在 C++ 中)

c++ - "new int[];"是做什么的?

c++ - 没有虚拟析构函数的继承

javascript - 按位与(&)运算符的数学函数是什么(JS)?

c++ - 重载运算符 ->

c++ - 如何提高C或C++中的多维位数组比较性能

c++ - 第二个条件中的 i & (1<<j)) 是什么意思?

使用按位运算符比较 float