2017-04-17 112 views
-2

這是來自CodeWars上的練習。任務是實現一個函數,將兩個數字相加,並以二進制形式返回它們的總和。4.to_s(2)中的整數2在Ruby中做了什麼?

這是我在Ruby中的解決方案。

def add_binary(a,b) 
    binary_result = (a + b).to_s(2) 
end 

是什麼參數(2)to_s方法呢?

例如:

a = 2 
b = 2 

我可以按照這個結果字符串"4"但我不明白什麼是與(2)說法偶然得到的字符串:二進制值"100"

我試圖看看整數下的Ruby文檔。

https://ruby-doc.org/core-2.4.0/Integer.html#method-i-to_s

這裏是(2)是指的基部10它是如何工作的?代碼如何處理"4"字符串?

+0

你到底在問什麼?您在您的問題中承認'2'是基本說明符,並鏈接到確認這一點的文檔。如果你的問題只是「爲什麼4等於100二進制」,這與Ruby無關。 – meagar

回答

1

2是指基地2,所設置的實際位的字符串表示:

0.to_s(2) # => "0" 
1.to_s(2) # => "1" 
2.to_s(2) # => "10" 
3.to_s(2) # => "11" 
4.to_s(2) # => "100" 
5.to_s(2) # => "101" 
6.to_s(2) # => "110" 
7.to_s(2) # => "111" 

它是如何工作的?代碼用「4」字符串做什麼?

您需要研究如何表示字節。在許多領域的編程中,至少知道一個數字的二進制,十進制和十六進制表示並能夠理解它們是至關重要的。 https://en.wikipedia.org/wiki/Radix會讓你開始。

to_s(n)雖然對許多其他用途非常有用,所以我建議儘量熟悉它。

+0

感謝您的評論,我會研究這些表述。 –

+0

https://en.wikipedia.org/wiki/Radix –

0

參數to_s需要的是轉換的基礎。 2將呈現二進制結果。 10是默認值。

4的二進制表示是100

1 0 0 
----- 
4 2 1 
+0

有趣,謝謝! –