2016-12-09 63 views
0

两个整数之间的铲子运算符如何产生返回值?在这个Ruby表达式中发生了什么计算:5 << 7?

irb(main):001:0> 5 << 7 
=> 640 
+1

这是记录和容易找到。查看http://ruby-doc.org/主页面,单击[Core API](http://ruby-doc.org/core)链接,然后使用浏览器搜索“<<”。你可以从那里轻松搞定。 –

+0

很高兴告诉我们您不明白文档的具体部分,以便Ruby开发人员可以改进文档。 –

+0

我第一次尝试在ruby-doc页面顶部的搜索框中搜索'<<',但是空了。然后,我查看了整数和数字类页面上的'<<'方法,并且出现了空白。当时,我从来没有想过要在核心页面上搜索'<<'来搜索核心库中的每一个Ruby方法。我吸取了教训。 –

回答

5

这是一个按位移位:

640 = 5 * (2^7) 
+1

也许最好在代码中把它写成'5 * 2 ** 7#=> 640'。 –

8

这是左移位运算符,在这里你可以看到它更容易与二进制记数法证明:

5 << 7 
# => 640 
5.to_s(2) 
# => "101" 
(5 << 7).to_s(2) 
# => "1010000000" 

注意附加7 0位。

相关问题