"number>>1"在"binary(number >> 1)"中是什么意思(十进制到二进制转换)

What does "number>>1" mean in "binary(number >> 1)" (Decimal to Binary conversion)

本文关键字:gt number 二进制 转换 十进制 是什么 binary 意思      更新时间:2023-10-16

此代码将十进制整数转换为二进制。这工作得很好。我知道这是使用递归方法完成的...但我不明白该参数在此函数的第 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将被打印出来。

* 维基百科术语