Udostępnij za pośrednictwem


Bitowe operatory Shift

Operatory przesunięcia shift ich pierwszy operand po lewej (<<) lub w prawo (>>) przez liczbę pozycji określa drugi operand.

Składnia

  • SHIFT wyrażenie:
    wyrażenie dodatku

    SHIFT wyrażenie<<dodatku shift wyrażenie>>wyrażenie dodatku

Oba operandy musi być integralną wartości.Tych operatorów wykonywania zwykłych konwersje arytmetycznych; Typ wyniku jest typem lewego operandu po konwersji.

Dla leftward przesunięcia zostały zasiedlone prawo bity są ustawione na 0.Dla rightward przesunięcia zostały zasiedlone lewej bity są wypełnione na podstawie typu pierwszego operandu po konwersji.Jeśli typem jest unsigned, są ustawione na 0.W przeciwnym razie są wypełnione kopie bitem znaku.Dla podmiotów gospodarczych lewy shift bez przepełnienia, instrukcja

expr1 << expr2 

mnożenie przez 2 odpowiadaWyr2.Dla operatorów prawy shift

expr1 >> expr2 

dzielenie przez 2 odpowiadaWyr2 Jeśli expr1 jest niepodpisany lub ma wartość nieujemna.

Wynik operacji shift jest niezdefiniowana, drugi operand jest liczbą ujemną lub prawy operand jest większa niż lub równa szerokości bitów promowanych lewy operand.

Ponieważ zestawami przez shift operatorów nie przewidują przepełnienie lub niedomiar warunków, informacje mogą zostać utracone, jeśli wynik operacji shift nie może być przedstawiona w rodzaju pierwszego operandu po konwersji.

unsigned int x, y, z;

x = 0x00AA;
y = 0x5500;

z = ( x << 8 ) + ( y >> 8 );

W tym przykładzie x jest przesunięty w lewo ośmiu pozycji i y jest przesuniętych prawo ośmiu pozycji.Przesuniętych wartości zostaną dodane, dając 0xAA55 i przypisany do z.

Przesuwanie wartość ujemna po prawej stronie plony pół oryginalne wartości, zaokrąglona w dół.Na przykład –253 (00000011 – 11111111 binarny) przesunięte –127 daje prawo jeden bit (10000001 – 11111111 binarny).Pozytywny 253 zmian roboczych prawo do produkcji +126.

Prawo zmiany zachowania bitem znaku.Gdy liczba całkowita ze znakiem przesuwa się po prawej, najbardziej znaczący bit pozostaje zestawu.Gdy liczba całkowita bez znaku przesuwa się po prawej, najbardziej znaczący bit jest wyczyszczone.

Zobacz też

Informacje

Operatory SHIFT: >> i <<