私は答えを探しまわってされているが、私はまだJavaScriptがBoolean
タイプを取り、int
タイプJavaScript:どのようにして>>> 0 = 1?
true >> 0 = 1
false >> 1 = 0
私は答えを探しまわってされているが、私はまだJavaScriptがBoolean
タイプを取り、int
タイプJavaScript:どのようにして>>> 0 = 1?
true >> 0 = 1
false >> 1 = 0
true == 1 = true
false == 0 = true
私は見つけることができるすべてでした
まず、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-pagging_right_shift)をご覧ください。また、true = 1 false = 0であるため、trueが暗黙的に1に変換されることを理解してください。 –