此代码将十进制整数转换为二进制。这是完美的工作。我知道这是使用递归方法完成的...但我不了解该函数第 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/