나는 이론 밖이다. 나는 그 밖에 무엇을 말할 지 모른다.자바 스크립트에서 연산자 '~'와 '!'의 차이점은 무엇입니까?
지금까지 항상 양쪽 모두 값을 false로 변경했다고 생각했습니다.
하지만!, true/false로 변경됩니다.
~, 음수가 1로 작아 지므로 2가 -3이됩니다. 왜, 어떻게.
나는 이론 밖이다. 나는 그 밖에 무엇을 말할 지 모른다.자바 스크립트에서 연산자 '~'와 '!'의 차이점은 무엇입니까?
지금까지 항상 양쪽 모두 값을 false로 변경했다고 생각했습니다.
하지만!, true/false로 변경됩니다.
~, 음수가 1로 작아 지므로 2가 -3이됩니다. 왜, 어떻게.
~ (비트 단위 NOT)
는 각 비트에 NOT 연산자를 수행합니다. NOT a는 a의 반전 된 값 (a.k.a.의 보수)을 산출합니다. NOT 작업의 진리표는 다음과 같습니다
a NOT a
0 1
1 0
예 The tilde ~
operator in JavaScript에서 공급
9 = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 = 11111111111111111111111111110110 (base 2) = -10 (base 10)
대답.
~ useful ... –
@MuhammadUmer 비트 연산과 부울 연산을 할 때! :) –
@MuhammadUmer 일반적인 경우는 정수의 n 번째 비트를 설정 해제하는 것입니다. 'value & ~ (1 << n)'값이 n 번째 비트가 설정되지 않음 (0부터 시작하는 오른쪽부터 인덱싱) – Esailija
!
는 ~
가 bitwise 연산자 동안 그 결과, 어느 true
또는 false
이다하는 logical operator이다.
~number
이 -number - 1
인 이유를 모르면 two's complement을 살펴보십시오.
저는 이론 밖입니다. 다른 말을 해야할지 모르겠습니다.
이 경우 language's documentation을 살펴보십시오.
! 부울 연산자 인 경우 부울 식의 결과를 무효화합니다.
~ 다른 쪽은 bitwise not 연산자입니다. 기본적으로이 연산자는 피연산자의 모든 비트를 반전시킵니다. 예를 들어 -1은 모두 1에서 0으로 표현됩니다 (0 비트가 설정됨을 의미).
[이 대답을보십시오 (http://stackoverflow.com/a/12337406/390819). – GolfWolf
질문 : 당신은 00000000000000000000000000001001이 9.이라는 것을 어떻게 알 수 있습니까? 32 비트가있는 이유는 자바 스크립트와 관련이 있습니까? –
@MuhammadUmer : 내 대답 (또는 Praveen이 제공 한 것)에서 [link] (http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.8)를 클릭하지 않은 것이 분명합니다.) : "UnaryExpression :'~'UnaryExpression은 다음과 같이 평가됩니다 : 1. 'expr'은 단항 표현식을 계산 한 결과가되게합니다 2. oldValue는 ** ToInt32 (GetValue (expr))가되게 합니다. ** 3. 'oldValue'에 비트 보수를 적용한 결과를 반환합니다. 결과는 ** 부호있는 32 비트 정수 **입니다. "* – Zeta