在这个Ruby表达式中发生了什么计算:5<< 7?

时间:2016-12-09 16:39:38

标签: ruby

两个整数之间的铲运算符如何导致返回值?

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

2 个答案:

答案 0 :(得分:8)

这是一个左移运算符,您可以使用二进制表示法更容易地看到它:

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

注意额外的7 0位。

答案 1 :(得分:5)

这是一个按位转变:

640 = 5 * (2^7)