JavaScript alatt mi a különbség a << és <<< valamint a >> és >>> bitenkénti operátorok között?
Mint sok más nyelvben a << / >> / >>> bitenként eltolást végez, azaz egy szám kettes számrendszerbeli alakján "tolja el" a biteket balra vagy jobbra.
Tehát ha van egy változónk:
var a = 10;
annak kettes számrendszerbeli alakja:
console.log(a.toString(2))
1010
kettővel balra eltolás esetén:
console.log((a<<2).toString(2))
101000
így kapunk 40-et.
Ha jobbra tolunk:
console.log((a<<2).toString(2))
10
kapunk 2-t.
A >> és a >>> között az a különbség, hogy míg az előző arimetikai eltolást végez az utóbbi logikait, tehát az utóbbi esetben az eltolt bitek helyére 0-t rak.
Ennek leginkább negatív számok esetén van jelentősége - szóval van egy változónk, negatív értékkel:
var a = -9;
ennek kettes számrendszerbeli alakja 32 biten:
console.log((a>>>0).toString(2))
11111111111111111111111111110111
ha ezt eltoljuk kettővel balra:
console.log((a>>2>>>0).toString(2))
11111111111111111111111111111101
így kapunk -3-at, viszont ha logikailag toljuk el:
console.log((a>>>2>>>0).toString(2))
111111111111111111111111111101
figyeljük meg a hiányzó két bitet az elejéről:
00111111111111111111111111111101
vagyis így 1073741821-et kapunk.
<<< operátor nincs.
Bővebben:
"Ha jobbra tolunk:
console.log((a<<2).toString(2))
10
kapunk 2-t. "
Javítva:
console.log((a>>2).toString(2))
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!