首页 > 解决方案 > 什么是 << 在 ruby​​ 中代表整数

问题描述

我在数组中了解它的用途是什么 <<,它用于推送,但在这里我不清楚以下代码的目的是什么。在哪里使用整数。

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那么它是否以字节为单位转换?或者它的目的到底是什么。

标签: rubyintegeroperators

解决方案


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

定义:

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

例子:

如果你这样做7 << 2 = 28

基地 2 中的 7 个: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

为什么?

位运算符广泛用于嵌入式系统上的低级编程以应用掩码(在本例中为整数)

好处

看到这个答案:链接

查看源代码以获取更多详细信息:链接


推荐阅读