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

Nit*_*ant 0 ruby

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

irb(main):001:0> 5 << 7
=> 640
Run Code Online (Sandbox Code Playgroud)

tad*_*man 8

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

 5 << 7
 # => 640
 5.to_s(2)
 # => "101"
 (5 << 7).to_s(2)
 # => "1010000000"
Run Code Online (Sandbox Code Playgroud)

注意额外的7 0位.


C. *_* L. 5

这是一个有点转变:

640 = 5 * (2^7)
Run Code Online (Sandbox Code Playgroud)