解释1<< 16 | 10?

时间:2013-04-04 19:57:09

标签: ruby

我需要使用下面的代码,但我对ruby和编程一般都是新手,并且不了解它的作用。有人可以告诉我这是做什么的,或者至少是什么叫做?

def MAKELPARAM(w1, w2)
  return (w2<<16) | w1
end

谢谢!

3 个答案:

答案 0 :(得分:2)

执行左移w2 16位,然后按位或w1进入结果。

答案 1 :(得分:1)

所以那些可能是按位运算符,如果你知道它们是数字但是如果进入的参数是数组那么&lt;&lt;是添加到数组的运算符。然后是| operator在一个或两个数组上返回一个数组中的元素数组 例如:

w1 =[]
w2 = [16,13]
w3 = [13]
MAKELPARAM(w1,w2)
#Returns [16,13]

MAKELPARAM(w1,w3)
#Returns [16,13]

MAKELPARAM(w1,w1)
#Returns [16]

答案 2 :(得分:0)

首先它向左移动了比较左边的16个位置,所以即取w2 = 1

w2 == 0b1
w2 << 16 == 0b1000000000000000

然后它使用bitewise或w1