Zen*_*r21 2 ruby integer operator-keyword
我是初学者/中级Ruby学习者,我跑了一些我不理解的东西.我查看了stackoverflow,但找不到一个清晰,简洁的答案,这就是为什么我要创建一个新问题.
如果给出数字a和b,当r等于时,结果是什么r:
a << b
Run Code Online (Sandbox Code Playgroud)
特别是,我正在寻找一个表示三个变量之间关系的通用方程.此外,深入了解Ruby如何在引擎盖下工作是受欢迎的,但次要的.
仅供参考,我在" https://repl.it/languages/ruby " 使用repl.it.
提前致谢!
编辑:<<通常被称为二进制或按位左移运算符.根据Andrey Deineko的EDIT2:这个问题与顶部列出的其他帖子不同,因为在另一篇文章中,没有明确,简明的答案如何运作.它简单地说它是一个按位左移位运算符,并显示了一些使用该方法的输出示例.特别是,我一直在寻找它如何在整数或fixnums上工作.似乎另一篇文章是关于运营商的一般用途.重申一下,这个问题是不同的,因为它特别适用于它如何在整数上工作,因此,下面的答案更详细地说明它如何在二进制级别上工作.
该操作被称为"按位左移",并且该术语很容易被转换.
简而言之,它采用LHO的二进制表示,并将其向左移动count,指定为RHO.
考虑一下你5 << 2
.5
由(64位)表示:
0000 0000 0000 0101
Run Code Online (Sandbox Code Playgroud)
左移2
是:
00 0000 0000 0101 00 # = 0000 0000 0001 0100
Run Code Online (Sandbox Code Playgroud)
或者反过来20
.让我们检查:
5 << 2
#? 20
Run Code Online (Sandbox Code Playgroud)
由于二进制数字基本系统的性质,左移相当于乘以各自的幂2
.那说,
m << n ? m × 2?
5 << 4 #? 5 × 2? ? 80
#? 80
Run Code Online (Sandbox Code Playgroud)