1

以下は私のコードですが、y の値が変わるのはなぜですか?
とはどういうvar y = x | 5;意味ですか?

コード

 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に基づいて計算されますか?

4

2 に答える 2

4

|はビットごとの OR 演算子です! オペランドをバイナリに変換し、すべてのビットで OR 演算を実行することで機能します。

バイナリの 5 は次のとおり101です。y次に、他のオペランドを変換してみて、操作を適用すると、どのように依存するかがわかりますx

例えば:

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

また、for ループに構文エラーが含まれていることに注意してください。行の最後;を削除すると、準備完了です。

for(; x < 11 ; x++) 

xまた、すでに宣言および初期化されているため、最初の部分では必要ありません

于 2013-04-20T11:19:26.787 に答える
2

| | はビット単位の OR 演算子です。OR 演算を実行しています

これはビット単位の or です。ビット演算は整数に対してのみ意味があるため、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)

ここを見る

于 2013-04-20T11:19:57.710 に答える