2016-09-09 38 views
0

我一直在四處尋找一個答案,但所有我能找到的就是爲什麼JavaScript:真的如何>> 0 = 1?

true == 1 = true 
false == 0 = true 

我還是不理解JavaScript如何採取Boolean類型,並將其添加到int

true >> 0 = 1 
false >> 1 = 0 
+0

有你的問題的標題很多運營商。根據用戶的解釋方式,它們可能會導致混淆。你可以調整它,使其更清晰? – byxor

+0

'true'被轉換爲Number ==> ** 1 **,右移0意味着什麼都不做。爲了進行比較,請使用嚴格的等號('===')和等號('!==')運算符。 – Tushar

+0

查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#>>_(Sign-propagating_right_shift)。另外,要明白true被隱式轉換爲1,因爲true = 1 false = 0。 –

回答

1

首先,true在JavaScript中隱式轉換爲1(在控制檯中嘗試Number(true) + 1,這將產生2)。

此外>>將這個比特的數目向右的,丟棄比特移位關閉。因此true >> 0除了隱式地將true轉換爲1(因爲沒有位被移位)之外不做任何事情。

對於第二個例子,false隱式轉換爲0因爲移位位被丟棄,換檔不會對結果的效果。嘗試false >> 1000,它仍然是0


很多更好的解釋可以發現here,感謝@亞當 - 貝克,他還增加了一個非常好的問題:

如果你不知道很多關於位移位,位運算符,甚至使用二進制數的工作,要知道,當你移動(>>或< <)由0你不換號都:152 >> 0 === 152

+1

我要回過頭來回答這個問題,並從我的評論中再次發佈一個鏈接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators# >> _( sign-propagating_right_shift) –

+0

「含蓄暗示」暗示地 – thephpdev

+0

!感謝您的更正;-) – lustoykov

相關問題