用整数表示ruby中的< < 代表什么

xam8gpfp  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(342)

这有什么用 << 我理解在数组中它是用于推送的,但在这里我不清楚在下面的代码中它的用途是什么。正在使用整数的位置。

def array_pack(a)
    a.reverse.reduce(0) { |x, b| (x << 8) + b }
end

array_pack([24, 85, 0]) # will print 21784

比如如果我x是8,我写 8 << 8 这给了我一个很好的回答 2048 那么它是以字节转换的吗?或者它的确切目的是什么。

bttbmeg0

bttbmeg01#

如文档所述,integer:<-返回左移“x”位置的整数,如果“x”为负数,则返回右移的整数。在您的场景中,将8个位置向左移动。
以下是它的工作原理:

8.to(2) => "1000"

现在让我们换班 "1000" 左边8个位置

(8 << 8).to_s(2) => "100000000000"

如果你数一数 0 上面你会看到它被添加了 8 之后 "1000" .
现在,让我们看看它是如何返回的 2048 ```
"100000000000".to_i(2) => 2048

evrscar2

evrscar22#

它是一个按位左移位运算符。
定义:

The LEFT SHIFT operator << shifts each bit of a number to the left by n positions.

例子:
如果你这样做 7 << 2 = 28 7在基数2中: 0000 0111 ```
128 64 32 16 8 4 2 1
----------------------
7: 0 0 0 0 0 1 1 1

现在将每个位向左移动2个位置

128 64 32 16 8 4 2 1
----------------------
28: 0 0 0 1 1 1 0 0

为什么?
位运算符广泛用于嵌入式系统的低级编程,以应用掩码(在本例中为整数)
利益
看看这个答案:link
查看源以了解更多详细信息:链接

相关问题