2014-12-22 84 views
0

該代碼將十進制整數轉換爲二進制數。這是完美的。我知道這已經完成使用遞歸方法......但我不明白該函數的第8行參數如何工作。提前致謝 :) 。「數字>> 1」在「二進制(數字>> 1)」中的含義

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

}

+2

這將取決於這是什麼語言。 –

+0

[Shift運算符在C]可能的重複 – Joe

回答

1

在大多數"C inspired languages*",操作者>>表示右(按位)移位運算。因此,代碼

binary(number >> 1); 

傳遞一個值到遞歸調用binary(),這是由一個位(由2即相同整數除法)向右移位。

當編號爲<= 1時,遞歸停止,即沒有更多的冪等於2來將剩餘數字除以by。

在此期間,模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將被打印。

*維基百科術語

+1

我看到沒有添加答案的優勢,因爲你的是足夠的寶貴,但它可以更多如果可以添加移位操作符的結構,如「操作數操作」,「移位操作符」,「操作數用作位計數中的移位計數」,則爲OP提供信息。通過這種方式,他可以看到他可以以任何他想要的方式混合轉換操作數,我想。 –

相關問題