2017-10-05 5 views
0

私はいくつかのPHPコードを見直し、これに出くわした:この番号はどこから来たのですか?

if(($this->int & 0b111111111) === 0){ //blah 

私は0b111111111がどこから来たのでは非常に困惑しました。これは何ですか?どのように生成されましたか?私はvar_dumpedとそれは511であることが判明しましたが、なぜ511の代わりにこれが使われましたか?それはどこから来たの?

+0

これは2進数で、クラスのプロパティとして存在する数字にビット演算子( '&'/bitwiseおよび)を使用して使用されます。 PHPはバイナリで動作するのが本当に一般的な言語ではありませんが、アプリケーションを見ることなく、それができる理由を言うのは難しいです。おそらく教育目的のためのこのコードですか? – Qirel

答えて

2

binary notationを使用する整数であり、10進表記で511に等しくなります。

符号器は、それをバイナリAND(&)のマスクとして使用しています。

2進AND演算子が2進値の各ビットを比較し、左右の数字の両方がその位置に1を持つ対応する位置で1を返すので、テストは$this->int == 0の場合にのみ0になります。

私はここでの使用の特別なアイデアはありません:文脈によっては、一貫性のためかもしれません。または書くだけの "巧妙なコード"です。

if($this->int === 0){  // Dumber blah 
+2

それの目的は何ですか?私は、一杯の丸数字を使用してみませんか? – fastquak

+0

@fastquak私の編集を見る – Bigood

関連する問題