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/