2016-08-31 9 views
2

ちょっとちょっとこのショートカットがJavaScriptで使用されているのを見たことがあります。Math.floorを使用せずにMath.floorを取得するJavascriptパイプ

(9 + 2)/2|0; // results in 5 

通常の計算を行うと5.5になります。

トップ式はどのようにしてMath.floor((9 + 2)/ 2)になりますか? 誰かがそのパイプがやっていることの方向を指すことができます、私はショートカットを理解していません。

+0

それはビット単位「または」 –

+1

はこの質問を見て持っているのです:[http://stackoverflow.com/questions/7487977/using-bitwise-or-0-to-floor-a-number – Calum

+1

を一覧JS演算子の...](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators) – nnnnnn

答えて

2

シングルパイプ| BitWise ORです。
ビット演算子は整数値のみを許可するため、小数点以下の値を破棄します。

Bitwise OR演算子| 2ビットのパターンを取り、対応するビットの各対に対してOR演算を実行する。
次の例で説明します。

1010        
1100  
----------bitwise or 
1110  
2
  1. まず(9+2)/2の結果は、その後、それはビット単位Or操作を適用していますJavaScriptの
  2. 5.5です。 JavaScriptの場合、ビット単位の操作は64ビット表現では直接動作しません。代わりに、値は32ビット整数に変換されます。つまり、5.55の場合、5|0の結果は5です。
関連する問題