2013-01-15 40 views
2

今天我一直在試圖找出按位運算符,有些東西對我來說仍然有點模糊。一切都很有意義,直到我開始嘗試合併| 〜,例如:number | ~number。在附註中,我已經閱讀了關於這兩個補充的維基百科文章,並理解它的這一方面(我認爲)。按位7 | 〜5 = -1;真的嗎?

------------------------------------------ 
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 
------------------------------------------ 
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | = 7 
------------------------------------------ 
| 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | = ~5 or -6 
------------------------------------------ 

使用&操作者等7 & ~5產生的2預期的結果,因爲只有2柱在兩行設置。這裏得到的是7 | ~5正在輸出-1。我預計這可能是255,因爲每列都有一個1或5,因爲最下面一行可能會計數0而不是1。但這兩者都不是,它是-1。

我已經使用了這個功能,直到我的大腦受傷,而且我無法找到解決此問題的任何地方的單個文章。有人知道這裏發生了什麼嗎?

回答

9

7 | ~5的結果是所有的一種模式。這是兩個補碼-1。

+0

但是,如果你可以點擊一個未簽名的數據類型,那麼你可能會得到你所期望的答案。 – Richard

+1

@Richard - 除了[php不支持無符號整數](http://php.net/manual/en/language.types.integer.php)這個不方便的事實外。 –

+0

的課程!我以前應該看到過!非常非常感謝你。這讓我瘋狂了很長時間。 –

相關問題