3

我需要使用下面的代码,但我对 ruby​​ 和一般编程很陌生,不明白这是做什么的。有人能告诉我这是做什么的,或者至少这叫什么吗?

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

谢谢!

4

3 回答 3

2

这会将 w2 左移 16 位,然后将 w1 按位或运算到结果中。

于 2013-04-04T19:59:09.967 回答
1

因此,如果您知道它们是数字,那么这些可能是按位运算符,但是如果传入的参数是数组,则 << 是要添加到数组的运算符。还有然后| 运算符在两个数组上执行或返回一个数组,该数组包含任一数组中的元素
例如:

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

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

MAKELPARAM(w1,w1)
#Returns [16]
于 2013-04-04T20:07:02.583 回答
0

首先它将 w2 向左移动 16 位,即w2 = 1

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

然后它使用 bitwise 或 with w1

于 2013-04-04T20:01:22.767 回答