console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Neden 0.5 | 0sıfır döndürür, ancak herhangi bir tam sayı (negatif dahil) girdi tamsayısını döndürür? Tek boru ("|") ne yapar?
console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Neden 0.5 | 0sıfır döndürür, ancak herhangi bir tam sayı (negatif dahil) girdi tamsayısını döndürür? Tek boru ("|") ne yapar?
Yanıtlar:
Bu biraz ya da .
Bitsel işlemler yalnızca tam sayılar üzerinde anlamlı olduğundan 0.5, kesilir.
0 | xxherhangi biri için x.
parseInt()
Bit karşılaştırması o kadar basit ki neredeyse anlaşılmaz;) Bu "nybble" a bakın
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)
Bitsel ORing 6 ve 10 size 14 verecektir:
alert(6 | 10); // should show 14
Çok kafa karıştırıcı!
alert(true | false) //yields 1; alert(true | true) //yields 1; alert(false | true) //yields 1; alert(false | false) //yields 0
Tek bir boru bit bazında OR'dir .
OR işlemini her bit çifti üzerinde gerçekleştirir. a OR b, a veya b 1 ise 1 verir.
JavaScript, bitsel işlemlerde tamsayı olmayan sayıları keser, böylece 0|00 olarak hesaplanır .
Bu örnek size yardımcı olacaktır.
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);