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