我需要使用下面的代碼,但我是一般的Ruby和編程新手,不明白這是什麼。有人能告訴我這是什麼或至少是什麼?說明1 << 16 | 10?
def MAKELPARAM(w1, w2)
return (w2<<16) | w1
end
謝謝!
我需要使用下面的代碼,但我是一般的Ruby和編程新手,不明白這是什麼。有人能告訴我這是什麼或至少是什麼?說明1 << 16 | 10?
def MAKELPARAM(w1, w2)
return (w2<<16) | w1
end
謝謝!
這執行w2左移16位,然後按位或w1結果。
謝謝,我不能爲我的生活弄清楚這是如何工作的。如果我輸入MAKELPARAM(10,1),我會得到65546!如果任何人有興趣[這裏](http://www.tutorialspoint.com/ruby/ruby_operators.htm)是一個鏈接到什麼左移,位或者是在紅寶石。 – 2013-04-05 10:36:52
首先,它由16個地方向左位位移W2,所以即採取w2 = 1
:
w2 == 0b1
w2 << 16 == 0b1000000000000000
然後它使用bitewise或w1
。
所以這些可能是按位運算符,如果你知道它們是數字,但如果進入的參數是數組然後< <是要添加到數組的運算符。還有,|操作者執行一次或上的兩個陣列的返回是任一陣列
對於實施例中的元素的數組:
w1 =[]
w2 = [16,13]
w3 = [13]
MAKELPARAM(w1,w2)
#Returns [16,13]
MAKELPARAM(w1,w3)
#Returns [16,13]
MAKELPARAM(w1,w1)
#Returns [16]
MAKELPARAM(w1,w1) #退回[16,16] – 2013-04-04 20:14:44
它並不是因爲|或者是兩個列表在一起。試試irb吧。 |在那裏停止輸出列表中的副本。 – Mgrandjean 2013-04-04 21:42:31
這是正確答案 - 表達式的結果取決於類'''w1'''和'''w2'''是實例。 – 2013-04-05 01:01:41
''<<是位位移運算符,'|'是按位或。 – thejh 2013-04-04 19:58:57
'<<'是左移位,'|'是按位或。現在你可以谷歌:) – 2013-04-04 19:59:22
'w2 * 2^16 + w1' – 2013-04-04 20:06:24