Kezdőoldal » Számítástechnika » Programozás » JavaScript alatt mi a különbsé...

JavaScript alatt mi a különbség a << és <<< valamint a >> és >>> bitenkénti operátorok között?

Figyelt kérdés
2017. aug. 23. 12:37
 1/6 anonim ***** válasza:
A dokumentáció mit mond?
2017. aug. 23. 13:21
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
100%

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:

[link]

[link]

[link]

2017. aug. 23. 13:34
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
100%

"Ha jobbra tolunk:

console.log((a<<2).toString(2))

10

kapunk 2-t. "

Javítva:

console.log((a>>2).toString(2))

2017. aug. 23. 13:38
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Köszi a válaszokat.
2017. aug. 23. 23:22
 5/6 VikATanacsTalan ***** válasza:
Annyit még hozzá tennék, hogy amikor Javat tanultam pár hónapja az alapoktól, akkor megemlítették, hogy ugyan a nyelv támogatja ezeket az operátorokat, de a gyakorlatban szinte sosem használják őket.
2017. aug. 29. 18:35
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Egyébként annyit hozzátennék, hogy a Java és a Javascript k#rvára nem ugyanaz.
2017. aug. 29. 18:42
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!