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;
}
答案 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 ++之前使用的。