私はいくつかのPHPコードを見直し、これに出くわした:この番号はどこから来たのですか?
if(($this->int & 0b111111111) === 0){ //blah
私は0b111111111
がどこから来たのでは非常に困惑しました。これは何ですか?どのように生成されましたか?私はvar_dumped
とそれは511であることが判明しましたが、なぜ511の代わりにこれが使われましたか?それはどこから来たの?
私はいくつかのPHPコードを見直し、これに出くわした:この番号はどこから来たのですか?
if(($this->int & 0b111111111) === 0){ //blah
私は0b111111111
がどこから来たのでは非常に困惑しました。これは何ですか?どのように生成されましたか?私はvar_dumped
とそれは511であることが判明しましたが、なぜ511の代わりにこれが使われましたか?それはどこから来たの?
binary notationを使用する整数であり、10進表記で511に等しくなります。
符号器は、それをバイナリAND(&)のマスクとして使用しています。
2進AND演算子が2進値の各ビットを比較し、左右の数字の両方がその位置に1を持つ対応する位置で1を返すので、テストは$this->int == 0
の場合にのみ0になります。
私はここでの使用の特別なアイデアはありません:文脈によっては、一貫性のためかもしれません。または書くだけの "巧妙なコード"です。
if($this->int === 0){ // Dumber blah
これは2進数で、クラスのプロパティとして存在する数字にビット演算子( '&'/bitwiseおよび)を使用して使用されます。 PHPはバイナリで動作するのが本当に一般的な言語ではありませんが、アプリケーションを見ることなく、それができる理由を言うのは難しいです。おそらく教育目的のためのこのコードですか? – Qirel