c++ - "number>>1"中的 "binary(number >> 1)"是什么意思(十进制转二进制)

标签 c++ function parameters binary

此代码将十进制整数转换为二进制。这是完美的工作。我知道这是使用递归方法完成的...但我不了解该函数第 8 行的参数是如何工作的。提前致谢:)。

void binary(int number) {
int remainder;
if(number <= 1) {
    cout << number;
    return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;

最佳答案

在大多数"C inspired languages*" , 运算符(operator) >>表示右(按位)移位运算符。所以代码

binary(number >> 1); 

将一个值传递给对 binary() 的递归调用, 它向右移动一位(即与整数除以 2 相同)。

当数字为<= 1时递归停止,即没有更多的 2 的幂来除以剩余的数字。

在此期间,模 2 (% 2)调用的余数保留并写入内部递归调用之后,这样它将保留 2 次方的正确位置。

例如

12 Decimal
 / 2 = 6 remainder 0   // printed fourth
 / 2 = 3 remainder 0   // printed third
 / 2 = 1 remainder 1   // printed second
 > <= 1 so Print 1     // printed first

所以 1100将被打印出来。

* 维基百科术语

关于c++ - "number>>1"中的 "binary(number >> 1)"是什么意思(十进制转二进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27605636/

相关文章:

WordPress动态侧边栏没有标题

javascript - "characterIndex"的问题是什么,它给出了 Uncaught TypeError : Cannot read property '8' of undefined?

button - Jenkins - 这可能吗?为基于参数的作业设置多个构建按钮

c++ - 生成属于指数分布的随机数

c++ - AES 解密大于可用 RAM 的文件

c++ - 原地轮换C++实践

javascript - 允许 `p.foo = o.foo` 返回对函数 `foo` 的引用的 javascript 机制/规则是什么?

c++ - inline 或 constexpr 函数的多个定义的含义

c++ - QT C++ - 信号和槽 : "No such slot QLabel..." even the SLOT function is existing in my class

java - 通过传递参数和结果从 Java 调用 Python 代码