2013-07-04 3 views
1

나는 이론 밖이다. 나는 그 밖에 무엇을 말할 지 모른다.자바 스크립트에서 연산자 '~'와 '!'의 차이점은 무엇입니까?

지금까지 항상 양쪽 모두 값을 false로 변경했다고 생각했습니다.

하지만!, true/false로 변경됩니다.

~, 음수가 1로 작아 지므로 2가 -3이됩니다. 왜, 어떻게.

+0

[이 대답을보십시오 (http://stackoverflow.com/a/12337406/390819). – GolfWolf

+0

질문 : 당신은 00000000000000000000000000001001이 9.이라는 것을 어떻게 알 수 있습니까? 32 비트가있는 이유는 자바 스크립트와 관련이 있습니까? –

+0

@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

답변

1

~ (비트 단위 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) 

대답.

+0

~ useful ... –

+0

@MuhammadUmer 비트 연산과 부울 연산을 할 때! :) –

+0

@MuhammadUmer 일반적인 경우는 정수의 n 번째 비트를 설정 해제하는 것입니다. 'value & ~ (1 << n)'값이 n 번째 비트가 설정되지 않음 (0부터 시작하는 오른쪽부터 인덱싱) – Esailija

0

! 부울 연산자 인 경우 부울 식의 결과를 무효화합니다.

~ 다른 쪽은 bitwise not 연산자입니다. 기본적으로이 연산자는 피연산자의 모든 비트를 반전시킵니다. 예를 들어 -1은 모두 1에서 0으로 표현됩니다 (0 비트가 설정됨을 의미).

관련 문제