"number>>1"在"binary(number >> 1)"中是什么意思(十进制到二进制转换)
What does "number>>1" mean in "binary(number >> 1)" (Decimal to Binary conversion)
此代码将十进制整数转换为二进制。这工作得很好。我知道这是使用递归方法完成的...但我不明白该参数在此函数的第 8 行上是如何工作的。提前感谢:).
void binary(int number) {
int remainder;
if(number <= 1) {
cout << number;
return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;
}
在大多数"C 启发语言*"中,运算符 >>
表示右(按位(移位运算符。所以代码
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
将被打印出来。
* 维基百科术语
相关文章:
- EASTL矢量<向量<int>>连续的
- 具有变量Number of Arguments的std::函数的矢量
- 什么"!<number> 在 C/C++ 中表示
- 找到$number,然后将其替换为$number+1
- Rcpp 'candidate function has different number of parameters (expected 0 but has 1)'
- 如果 i<=number-1,那么 i 的最大值应该是 number-1,那么 number%1==0 或 i==number 语句如何为真?
- 使用 Boost ASIO 和 SSL 时出现"Wrong Version Number"错误 (C++)
- QMutex with QThread - prime number sekeer
- 由于错误'wrong version number'无法完成握手
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 是否有与C++"-Wl,--stack,[a number, e.g. 4194304 for 4Mb of stack]"的 CUDA 等效性?
- C 字符串比较“祝您好运”&gt;“再见”
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C++相当于 Python '#'*number?
- 为什么在这种情况下使用 int *arr = new int [number]
- 是否有内置函数返回" the number of true value in a boolean vector "?
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- C 操作员&gt;&gt;与突变器过载
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 函数参考funcname @number, @x是什么意思