“number>> 1”在“二进制(数字>> 1)”(十进制到二进制转换)中的含义是什么

时间:2014-12-22 15:30:52

标签: 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;

}

1 个答案:

答案 0 :(得分:1)

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

binary(number >> 1); 

将值传递给binary()的递归调用,该调用向右移一位(即整数除以2)。

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

在此期间,调用的模2 (% 2)余数保持在内部递归调用之后,以便它将保持2的幂的正确位置

e.g。

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

* Wikipedias术语