programing

자바스크립트에서 "|"(단일 파이프)는 무엇을 합니까?

lastcode 2023. 8. 30. 21:44
반응형

자바스크립트에서 "|"(단일 파이프)는 무엇을 합니까?

console.log(0.5 | 0); // 0
console.log(-1 | 0);  // -1
console.log(1 | 0);   // 1

왜 그럴까요?0.5 | 00을 반환합니다. 그러나 모든 정수(음의 정수 포함)가 입력 정수를 반환합니까?단일 파이프("|")는 무엇을 합니까?

이건 약간 현명하거나.
비트 연산은 정수에서만 의미가 있으므로,0.5잘렸습니다.

x | 0이라x,한다면x는 정수입니다.

비트 비교는 너무 간단해서 거의 이해할 수 없습니다;) 이 "니블"을 확인하십시오.

   8 4 2 1
   -------
   0 1 1 0 = 6  (4 + 2)
   1 0 1 0 = 10 (8 + 2)
   =======
   1 1 1 0 = 14 (8 + 4 + 2)

비트와이즈 OR 6과 10은 14를 제공합니다.

   alert(6 | 10); // should show 14

정말 혼란스럽군요!

단일 파이프는 비트 단위의 OR입니다.

각 비트 쌍에 대해 OR 연산을 수행합니다. a 또는 b가 1이면 OR b가 1을 산출합니다.

자바스크립트는 비트 단위 연산에서 정수가 아닌 모든 숫자를 잘라내기 때문에 다음과 같이 계산됩니다.0|00입니다.

이 예는 당신에게 도움이 될 것입니다.

var testPipe = function(input) { 
   console.log('input => ' + input);
   console.log('single pipe | => ' + (input | 'fallback'));
   console.log('double pipe || => ' + (input || 'fallback'));
   console.log('-------------------------');
};

testPipe();
testPipe('something'); 
testPipe(50);
testPipe(0);
testPipe(-1);
testPipe(true);
testPipe(false);

이것은 Bitwsie OR(|)입니다.

피연산자는 32비트 정수로 변환되고 일련의 비트(0 및 1)로 표현됩니다.32비트를 초과하는 숫자는 가장 중요한 비트를 삭제합니다.

그래서 우리의 경우에는 십진수가 정수 0.5에서 0으로 변환됩니다.

= 0.5 | 0
= 0   | 0
= 0

언급URL : https://stackoverflow.com/questions/6194950/what-does-the-single-pipe-do-in-javascript

반응형