1

JavaScriptで次のコードを使用している場合:

var index1 = (Math.random() * 6) >> 0;
var index2 = Math.floor(Math.random() * 6);

index1またはの結果はとindex2の間のどこかに0あり6ます。

>>オペレーターの理解と混同しなければなりません。算術シフトを使用すると、の結果はとindex1の間のどこかにあると思いました。16

ただし、演​​算子を使用Math.floor()する場合は使用するMath.round()必要がないことに気づいています。index1>>

両方のインデックスに追加することでこれを実現できることはわかっていますが、を追加するのではなく、結果がからに1なるようにするためのより良い方法があることを望んでいました。161

ビット単位の演算子は、オペランドを10進数、16進数、または8進数ではなく、32ビット(0と1)のシーケンスとして扱うことを知っています。たとえば、10進数の9のバイナリ表現は1001です。ビット演算子はそのようなバイナリ表現に対して操作を実行しますが、標準のJavaScript数値を返します。

アップデート:

26行目のこのCAATチュートリアルで元の使用法を見て、それが実際にとの間の乱数を返すかどうか疑問に思っていました。との間の乱数しか返さないようです。だから、実際に魚の画像を見ることは決してないでしょう!1606anim1.png

啓蒙をよろしくお願いします。

4

1 に答える 1

1

ウィキペディアによると、「負の数の算術右シフトは、一部の歴史的なコンピューターで使用されていた、符号付き数値の1の補数表現で0への丸めを使用した除算に相当します。)」

正確には答えではありませんが、>> 0は本当に具体的であり、1から6の範囲を取得するために一般的に使用されるべきではないという考えです。

ほとんどの人はあなたにそうするように言うでしょう

 Math.floor((Math.random()*10)+1);
于 2013-03-26T05:59:44.823 に答える