0
我正在學習位運算符,爲此我在tutsplus上提取了article。那麼,它寫得很好。我可以理解&
和|
運營商,但~
搞砸了。例如,如文章中所述:瞭解〜運營商
其實就是這樣!翻轉從真布爾值爲假或者反之亦然, 〜運算符逆轉的整數每個二進制位:從0到1 和1到0
的製品已假定OS正存儲整數作爲1 byte
或8 bits
。我正在關注它。我正在使用PHP進行試驗。代碼的下面:
$b = 12;
$NOR = ~$b;
/*
* ------------------------
* | $b | 0 0 0 0 1 1 0 0 | = 12
* ------------------------
* | ~ | 1 1 1 1 0 0 1 1 | = 243 as 1 + 2 + 16 + 32 + 64 + 128 = 243
* ------------------------
* Each digit will be inverted.
*/
echobr($NOR);
即使我們認爲$b
被存儲爲32 bit
。然後倒數值應該是> 243
。相反,它返回-13
。 echobr()
是我定義的函數。
如果可以解釋,這將是非常有益的。
這幾乎每一臺機器是真的在那裏,但在技術上是正確的,你應該提到,這假定2的補碼。還有其他可能的表示形式,其中'-i'不一定是'〜i + 1'。請參閱http://en.wikipedia.org/wiki/Signed_number_representations –
@FilipeGonçalves謝天謝地,PHP總是使用二進制補碼。這是關於它唯一正確的事情.. – harold
@harold哈。我不知道。我不做任何PHP編程,我也不知道這門語言。很高興知道,謝謝你的加入。 –