2016-09-09 9 views
0

私は答えを探しまわってされているが、私はまだJavaScriptがBooleanタイプを取り、intタイプJavaScript:どのようにして>>> 0 = 1?

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-pagging_right_shift)をご覧ください。また、true = 1 false = 0であるため、trueが暗黙的に1に変換されることを理解してください。 –

答えて

1
に追加する方法を理解していない理由を

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

私は見つけることができるすべてでした

まず、trueがJavaScriptで1に暗黙的に変換されます(コンソールでNumber(true) + 1を試してください。これは2になります)。また

>>

右へビットをシフトし、廃棄ビットがオフにシフト。従ってtrue >> 0は暗黙的にtrue1(ビットがシフトされていないため)を変換する以外は何もしません。第例えば

は、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

"implicimplicitlyely" – thephpdev

+0

暗黙のうちに!訂正してくれてありがとう;-) – lustoykov

関連する問題