2016-09-09 8 views
0

내가 모든 내가 찾을 수있는, 대답을 둘러보고 만 한 것은 왜JavaScript : 어떻게해야합니까 >> 0 = 1?

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

난 아직도 자바 스크립트가 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-pagging_right_shift)를보십시오. 또한 true는 true = 1 false = 0이므로 true가 암시 적으로 1로 변환된다는 것을 이해하십시오. –

답변

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

"implicimplicitlyely" – thephpdev

+0

암시 적으로! 수정 해 주셔서 감사합니다 ;-) – lustoykov