2017-10-05 74 views
0

我正在審查一些PHP代碼,並偶然發現了這一點:這個數字來自哪裏?

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

我在哪裏0b111111111是從哪裏來的很是不解。這是什麼,它是如何產生的?我var_dumped它,它竟然是511,但爲什麼這是用來代替數字511?它從哪裏來的?

+0

這是二進制的數字,位運算符('&'/按位和)對一些存在的類的屬性使用。 PHP不是一種使用二進制文件非常常見的語言,但您可以做到這一點(沒有看到應用程序很難說它爲什麼在那裏)。這是用於教育目的的代碼嗎? – Qirel

回答

2

它是一個使用binary notation的整數,並且等於511的十進制表示法。

編碼器將其用作二進制「與」的掩碼(&)。

只有當$this->int == 0,因爲二進制AND運算符比較二進制值的每個位,並且在相應位置(其中左側和右側數字在該位置處具有1)返回1,則該測試等於0。

雖然我對這裏的使用沒有特別的想法:根據上下文,它可能是爲了一致性。或者,它只是「聰明代碼」編寫

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

雖然它的目的是什麼?我的意思是,爲什麼不使用全面的數字? – fastquak

+0

@fastquak看我的編輯 – Bigood