Mantık VE. Her iki bit de 1 ise her biti 1'e ayarlar
Mantık VEYA. İki bitten biri 1 ise her biti 1'e ayarlar
Mantık XOR. İki bitten yalnızca biri 1 ise her biti 1'e ayarlar
Mantık DEĞİL. Tüm bitleri tersine çevirir
Sıfır doldurma sola kaydırma. Sıfırları sağdan içeri iterek sola kaydırır ve en soldaki bitlerin düşmesine izin verir
İmzalı sağa kaydırma. En soldaki bitin kopyalarını soldan içeri iterek sağa kaydırır ve en sağdaki bitlerin kopyalarını içeri alır. düşmek
Sıfır doldurma sağa kaydırma. Sıfırları soldan içeri iterek sağa kaydırır ve en sağdaki bitlerin düşmesine izin verir
| Operation | Result | Same as | Result |
|---|---|---|---|
| 5 & 1 | 1 | 0101 & 0001 | 0001 |
| 5 | 1 | 5 | 0101 | 0001 | 0101 |
| ~ 5 | 10 | ~0101 | 1010 |
| 5 << 1 | 10 | 0101 << 1 | 1010 |
| 5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
| 5 >> 1 | 2 | 0101 >> 1 | 0010 |
| 5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript sayıları 64 bitlik kayan noktalı sayılar olarak saklar, ancak tümü bitseldir işlemler 32 bitlik ikili sayılar üzerinde gerçekleştirilir.
Bitsel bir işlem gerçekleştirilmeden önce, JavaScript sayıları 32 bit'e dönüştürür imzalı tamsayılar
Bitsel işlem gerçekleştirildikten sonra sonuç tekrar 64 bitlik JavaScript'e dönüştürülür. sayılar.
Yukarıdaki örneklerde 4 bitlik işaretsiz ikili sayılar kullanılmaktadır. Bu nedenle ~ 5, 10 değerini döndürür.
JavaScript 32 bit işaretli tamsayılar kullandığından 10 döndürmez, -6 döndürür.
0000000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5=-6)
İşaretli bir tamsayı eksi işareti olarak en soldaki biti kullanır.
Bir bit çifti üzerinde bitsel AND işlemi gerçekleştirildiğinde, her iki bit de 1 ise 1 değerini döndürür.
0
0
0
1
0000
0001
0010
0100
Bir bit çifti üzerinde bit düzeyinde VEYA işlemi gerçekleştirildiğinde, bitlerden biri 1 ise 1 değerini döndürür:
0
1
1
1
1111
1111
1111
1111
Bir bit çifti üzerinde bit düzeyinde bir XOR gerçekleştirildiğinde, bitler farklıysa 1 değerini döndürür:
0
1
1
0
1111
1110
1101
1011
Bit bazında VE yalnızca her iki bit de 1 ise 1 değerini döndürür:
00000000000000000000000000000101
00000000000000000000000000000001
0000000000000000000000000000000001 (1)
let x = 5 & 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Bitwise AND</h1>
<h2>The & Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 & 1;
</script>
</body>
</html>
Bitlerden biri 1 ise, Bitsel VEYA 1 değerini döndürür:
00000000000000000000000000000101
00000000000000000000000000000001
000000000000000000000000000000101 (5)
let x = 5 | 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Bitwise OR</h1>
<h2>The | Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 | 1;
</script>
</body>
</html>
Bitler farklıysa, bitsel XOR 1 değerini döndürür:
00000000000000000000000000000101
00000000000000000000000000000001
0000000000000000000000000000000100 (4)
let x = 5 ^ 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Bitwise XOR</h1>
<h2>The ^ Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 ^ 1;
</script>
</body>
</html>
00000000000000000000000000000101
1111111111111111111111111111010 (-6)
let x = ~5;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Bitwise NOT</h1>
<h2>The ~ Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = ~ 5;
</script>
</body>
</html>
Bu sıfır dolgulu sola kaydırmadır. Sağdan bir veya daha fazla sıfır biti içeri itilir, ve en soldaki bitler düşüyor:
00000000000000000000000000000101
0000000000000000000000000000001010 (10)
let x = 5 << 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Bitwise Left</h1>
<h2>The << Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 << 1;
</script>
</body>
</html>
Bu sağa kaymayı koruyan bir işarettir. En soldaki bitin kopyaları itilir soldan girer ve en sağdaki bitler düşer:
11111111111111111111111111111011
1111111111111111111111111111101 (-3)
let x = -5 >> 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Signed Bitwise Right</h1>
<h2>The >> Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = -5 >> 1;
</script>
</body>
</html>
Bu sıfır doldurma sağa kaydırmadır. Bir veya daha fazla sıfır bit soldan içeri itilir, ve en sağdaki bitler düşüyor:
00000000000000000000000000000101
0000000000000000000000000000000010 (2)
let x = 5 >>> 1;Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Unsigned Bitwise Right</h1>
<h2>The >>> Operator</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 >>> 1;
</script>
</body>
</html>
Yalnızca bir bit kümesine sahip ikili sayıların anlaşılması kolaydır:
1
2
4
8
16
32
64
Birkaç bitin daha ayarlanması ikili modeli ortaya çıkarır:
5 (4 + 1)
13 (8 + 4 + 1)
45 (32 + 8 + 4 + 1)
JavaScript ikili sayıları ikinin tamamlayıcısı biçiminde saklanır.
Bu, negatif bir sayının, sayı artı 1'in bit düzeyinde DEĞİL olduğu anlamına gelir:
5
-5
6
-6
40
-40
Dünyada yalnızca 10 tür insan vardır: İkili sistemi anlayanlar ve anlamayanlar.
function dec2bin(dec){
return (dec >>> 0).toString(2);
}Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Convert Decimal to Binary</h1>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = dec2bin(-5);
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
</script>
</body>
</html>
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}Kendiniz Deneyin →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Convert Binary to Decimal</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = bin2dec(101);
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}
</script>
</body>
</html>