>>

[Bitenkénti operátorok]

Leírás

A jobbra eltolási operátor >> a bal oldali operandus bitjeit jobbra tolja el a jobb oldali operandus által meghatározott számú pozícióval.

Szintaxis

változó >> bitek_száma;

Paraméterek

változó: Engedélyezett adattípusok: byte, int, long.
bitek_száma: a szám < = 32. Engedélyezett adattípusok: int.

Példa

int a = 40;     // binárisan: 0000000000101000
int b = a >> 3; // binárisan: 0000000000000101, vagy 5 in decimálisan

Megjegyzések és figyelmeztetések

Ha x-et y bittel (x >> y) jobbra tolja, és az x-ben a legmagasabb helyiértékű bit 1-es, a viselkedés az x pontos adattípusától függ. Ha x int típusú, akkor a legmagasabb bit az előjelbit, amely meghatározza, hogy x negatív-e vagy sem, amint azt fentebb tárgyaltuk. Ebben az esetben ezoterikus történelmi okokból az előjelbitet alacsonyabb bitekre másolják:

int x = -16;  // binárisan: 1111111111110000
int y = 3;
int result = x >> y;  // binárisan: 1111111111111110

Ez a jelkiterjesztésnek nevezett viselkedés gyakran nem a kívánt viselkedés. Ehelyett azt kívánhatja, hogy a nullákat balról tolja el. Kiderült, hogy a jobb oldali eltolási szabályok eltérőek az előjel nélküli int kifejezéseknél, így típusátalakítás segítségével elnyomhatja a balról másolandókat:

int x = -16;  // binárisan: 1111111111110000
int y = 3;
int result = (unsigned int)x >> y;  // binárisan: 0001111111111110

Ha ügyel arra, hogy elkerülje a jelek kiterjesztését, használhatja a >> jobbra váltó operátort a 2 hatványaival való osztáshoz. Például:

int x = 1000;
int y = x >> 3; // 1000 egész osztása 8-cal, ami y = 125-öt eredményez.

Lásd még