Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;:当作为函数参数传递时,这个插入表达式做什么?它是如何工作的?_C++_Bitwise Operators - Fatal编程技术网

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)