2017-04-17 114 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

有趣,谢谢! –