我正在審查一些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的整數,並且等於511的十進制表示法。
編碼器將其用作二進制「與」的掩碼(&)。
只有當$this->int == 0
,因爲二進制AND運算符比較二進制值的每個位,並且在相應位置(其中左側和右側數字在該位置處具有1)返回1,則該測試等於0。
雖然我對這裏的使用沒有特別的想法:根據上下文,它可能是爲了一致性。或者,它只是「聰明代碼」編寫
if($this->int === 0){ // Dumber blah
這是二進制的數字,位運算符('&'/按位和)對一些存在的類的屬性使用。 PHP不是一種使用二進制文件非常常見的語言,但您可以做到這一點(沒有看到應用程序很難說它爲什麼在那裏)。這是用於教育目的的代碼嗎? – Qirel