我一直在四處尋找一個答案,但所有我能找到的就是爲什麼JavaScript:真的如何>> 0 = 1?
true == 1 = true
false == 0 = true
我還是不理解JavaScript如何採取Boolean
類型,並將其添加到int
型
true >> 0 = 1
false >> 1 = 0
我一直在四處尋找一個答案,但所有我能找到的就是爲什麼JavaScript:真的如何>> 0 = 1?
true == 1 = true
false == 0 = true
我還是不理解JavaScript如何採取Boolean
類型,並將其添加到int
型
true >> 0 = 1
false >> 1 = 0
首先,true
在JavaScript中隱式轉換爲1
(在控制檯中嘗試Number(true) + 1
,這將產生2
)。
此外>>
將這個比特的數目向右的,丟棄比特移位關閉。因此true >> 0
除了隱式地將true
轉換爲1
(因爲沒有位被移位)之外不做任何事情。
對於第二個例子,false
隱式轉換爲0
和因爲移位位被丟棄,換檔不會對結果的效果。嘗試false >> 1000
,它仍然是0
。
很多更好的解釋可以發現here,感謝@亞當 - 貝克,他還增加了一個非常好的問題:
如果你不知道很多關於位移位,位運算符,甚至使用二進制數的工作,要知道,當你移動(>>或< <)由0你不換號都:
152 >> 0 === 152
有你的問題的標題很多運營商。根據用戶的解釋方式,它們可能會導致混淆。你可以調整它,使其更清晰? – byxor
'true'被轉換爲Number ==> ** 1 **,右移0意味着什麼都不做。爲了進行比較,請使用嚴格的等號('===')和等號('!==')運算符。 – Tushar
查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#>>_(Sign-propagating_right_shift)。另外,要明白true被隱式轉換爲1,因爲true = 1 false = 0。 –