C++ c++;:当作为函数参数传递时,这个插入表达式做什么?它是如何工作的?
C++ c++;:当作为函数参数传递时,这个插入表达式做什么?它是如何工作的?,c++,bitwise-operators,C++,Bitwise Operators,二进制(数字>>1)的含义是什么,在下面的代码中它是如何工作的?谁能给我详细解释一下吗?谢谢大家! #include <iostream.h> void binary(int); int main() { int number = 3; cout << number << endl; binary(number); } void binary(int number) { if(number <= 1) {
二进制(数字>>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;
}
#包括
无效二进制(int);
int main(){
整数=3;
cout
运算符是位移位运算符;它们根据数字的二进制表示形式更改值;示例将阐明:
001010 (10)
如果我们将>1
(右移1位)转换为原始值,我们将得到以下结果:
000101 (5)
同样,如果你仔细观察,你会注意到上面的结果相当于除以2!事实上,右移位运算符是左移位运算符的逆运算符,所以右移位n位相当于除以2的n次方
<> > <>代码>空()/<代码>是完全错误的,所以不要使用它。<代码> <代码>应该被替换为<代码> <代码>,因为前者是在标准ISOC++之前使用的。你是指“代码> > <代码>?它是一个“右移”,并且因为你称之为“插入表达式”。,不要将它的用途与诸如cin/cout之类的流混淆。它是相同的符号,但这些流类与它们的重载运算符做了完全不同的事情。顺便说一句,不要使用%2
来获得低位,使用&1
%
对负数做了错误的处理。你可以找到b的菜单asic运算符等。例如()。递归调用更为复杂,因此您最好在调试器中运行程序,并逐语句逐条执行。不要认为,void main
是非标准的,
是一个预标准头(1998年之前),现代编译器通常不提供。
000101 (5)