JavaScript Bitsel İşlemler
JavaScript Bitsel Operatörler
Operator | Name | Description |
---|---|---|
& | AND | Sets each bit to 1 if both bits are 1 |
| | OR | Sets each bit to 1 if one of two bits is 1 |
^ | XOR | Sets each bit to 1 if only one of two bits is 1 |
~ | NOT | Inverts all the bits |
<< | Zero fill left shift | Shifts left by pushing zeros in from the right and let the leftmost bits fall off |
>> | Signed right shift | Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off |
>>> | Zero fill right shift | Shifts right by pushing zeros in from the left, and let the rightmost bits fall off |
Örnekler
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 32 bit Bit Yönlü İşlenenler Kullanır
JavaScript, sayıları 64 bitlik kayan noktalı sayılar olarak saklar, ancak tüm bitsel işlemler 32 bitlik ikili sayılar üzerinde gerçekleştirilir.
Bit düzeyinde bir işlem gerçekleştirilmeden önce JavaScript, sayıları 32 bit işaretli tam sayılara dönüştürür.
Bitsel işlem gerçekleştirildikten sonra, sonuç tekrar 64 bit JavaScript sayılarına dönüştürülür.
Yukarıdaki örneklerde 4 bitlik işaretsiz ikili sayılar kullanılmıştır. Bu nedenle ~ 5, 10 döndürür.
JavaScript 32 bit işaretli tamsayılar kullandığından 10 döndürmez. -6 döndürür.
0000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
İşaretli bir tamsayı, eksi işareti olarak en soldaki biti kullanır.
bit düzeyinde VE
Bir çift bit üzerinde bit düzeyinde AND gerçekleştirildiğinde, her iki bit de 1 ise 1 döndürür.
Operasyon | Sonuç |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 ve 1 | 1 |
Operasyon | Sonuç |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bit düzeyinde VEYA
Bir çift bit üzerinde bit düzeyinde OR gerçekleştirildiğinde, bitlerden biri 1 ise 1 döndürür:
Operasyon | Sonuç |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Operasyon | Sonuç |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitsel XOR
Bir çift bit üzerinde bit düzeyinde bir XOR gerçekleştirildiğinde, bitler farklıysa 1 döndürür:
Operasyon | Sonuç |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Operasyon | Sonuç |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript Bitsel VE (&)
Bitsel AND, yalnızca her iki bit de 1 ise 1 döndürür.
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
1 | 0000000000000000000000000000001 |
5 & 1 | 0000000000000000000000000000001 (1) |
Örnek
let x = 5 & 1;
JavaScript Bitsel VEYA (|)
Bitsel VEYA, bitlerden biri 1 ise 1 döndürür:
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
1 | 0000000000000000000000000000001 |
5 | 1 | 0000000000000000000000000000101 (5) |
Örnek
let x = 5 | 1;
JavaScript Bitsel XOR (^)
Bitsel XOR, bitler farklıysa 1 döndürür:
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
1 | 0000000000000000000000000000001 |
5 ^ 1 | 0000000000000000000000000000100 (4) |
Örnek
let x = 5 ^ 1;
JavaScript Bitsel DEĞİL (~)
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Örnek
let x = ~5;
JavaScript (Sıfır Doldurma) Bit Yönünde Sola Kaydırma (<<)
Bu bir sıfır dolgu sola kaydırmadır. Bir veya daha fazla sıfır biti sağdan içeri itilir ve en soldaki bitler düşer:
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Örnek
let x = 5 << 1;
JavaScript (İşaret Koruma) Bit Yönünde Sağa Kaydırma (>>)
Bu, sağa kaymayı koruyan bir işarettir. En soldaki bitin kopyaları soldan içeri itilir ve en sağdaki bitler düşer:
Ondalık | İkili |
---|---|
-5 | 1111111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Örnek
let x = -5 >> 1;
JavaScript (Sıfır Doldurma) Sağ Kaydırma (>>>)
Bu, sıfır dolgulu bir sağa kaymadır. Bir veya daha fazla sıfır biti soldan içeri itilir ve en sağdaki bitler düşer:
Ondalık | İkili |
---|---|
5 | 0000000000000000000000000000000101 |
5 >>> 1 | 000000000000000000000000000010 (2) |
Örnek
let x = 5 >>> 1;
İkili Sayılar
Yalnızca bir bitlik kümeye sahip ikili sayıların anlaşılması kolaydır:
İkili Temsil | ondalık değer |
---|---|
0000000000000000000000000000001 | 1 |
0000000000000000000000000000000010 | 2 |
0000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
000000000000000000000000000010000 | 16 |
000000000000000000000000100000 | 32 |
0000000000000000000000001000000000 | 64 |
Birkaç bit daha ayarlamak ikili düzeni ortaya çıkarır:
İkili Temsil | ondalık değer |
---|---|
0000000000000000000000000000000101 | 5 (4 + 1) |
0000000000000000000000000000001101 | 13 (8 + 4 + 1) |
0000000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
JavaScript ikili sayıları, ikinin tamamlayıcı biçiminde saklanır.
Bu, negatif bir sayının, sayı artı 1'in bit düzeyinde DEĞİL olduğu anlamına gelir:
İkili Temsil | ondalık değer |
---|---|
0000000000000000000000000000000101 | 5 |
1111111111111111111111111111111011 | -5 |
0000000000000000000000000000110 | 6 |
1111111111111111111111111111111010 | -6 |
000000000000000000000000000101000 | 40 |
111111111111111111111111111011000 | -40 |
Decimal'i İkiliye Dönüştürme
Örnek
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
İkiliyi Ondalık Sayıya Çevirmek
Örnek
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}