2013-04-20 56 views
1

下面是我的代碼,爲什麼y的值會改變?
var y = x | 5;是什麼意思?

代碼爲什麼y的值會根據x而改變?

var x = 0; 
     for(x; x < 11 ; x++) 
    { 
    var y = x | 5; 
    console.log("\nx: "+x+ " y : "+y) 
    } 

結果是

x: 0 y : 5 
    x: 1 y : 5 
    x: 2 y : 7 
    x: 3 y : 7 
    x: 4 y : 5 
    x: 5 y : 5 
    x: 6 y : 7 
    x: 7 y : 7 
    x: 8 y : 13 
    x: 9 y : 13 
    x: 10 y : 15 

爲什麼y變化基於x值。
關於什麼基礎y是計算?

+2

這真的是一個問題嗎?如果是的話,我感到震驚。 – 2013-04-20 11:19:33

+0

管道操作員已經被討論過: http://stackoverflow.com/questions/6194950/what-does-the-single-pipe-do-in-javascript – 2013-04-20 11:19:52

+0

+1爲好問題 – PSR 2013-04-20 11:25:37

回答

4

|是一個按位或運算符!它的工作原理是將操作數轉換爲二進制,並對每一位執行OR操作!

5進制是:101。 現在,嘗試做轉換等操作,應用操作,您將看到如何y取決於x

例如:

9 = 1001 
5 = 0101 
     ____ 
9|5 = 1101 == 13 

另外請注意,您的for循環包含語法錯誤。刪除最後的;在線,你很好去。

for(; x < 11 ; x++) 

而且,你不需要x在第一部分中,因爲它已經宣佈和初始化

+0

謝謝你的明確解釋 – VenomVendor 2013-04-20 11:24:44

+0

很高興如果有幫助。你也許想看看AND,OR,XOR真值表。 :) – SuperSaiyan 2013-04-20 11:27:02

+0

最後一個';'是放在這裏的錯字錯誤。 – VenomVendor 2013-04-20 11:32:55

2

|是一個按位或運算符。它正在執行或操作

這是一個按位或。 由於按位操作只對整數有意義,所以0.5被截斷。

0 | x is x, for any x. 

    0 1 1 0 = 6 
    1 0 1 0 = 10 
    1 1 1 0 = 14 

9 | 5 = 1101 (which is 13) 

SEE HERE

+1

@VenomVendor你現在有沒有得到答案 – PSR 2013-04-20 11:21:54

相關問題