Czym są operatorzy bitowate?
W programie komputerowym operatorzy bitowate są operatorami manipulowania wzorcami bitów w wyrażeniach. Bitwise i, lub, wyłączne lub (XOR), a nie przesunięcie prawe i przesunięcie lewej są powszechnymi operacjami. Większość języków programowania komputerowego obejmuje wszystkie sześć z tych operatorów. Często są używane do ustawiania, usuwania lub odwracania poszczególnych bitów w programach kontrolujących sprzęt komputerowy. Operatory bitowe są również często używane w algorytmach szyfrowania danych i kompresji.
Wspólni operatorzy bitowate są zwykle reprezentowani symbolicznie w językach programowania, takich jak C, C ++ i Java. Są one stosowane w wyrażeniach, tak jak operatorzy arytmetyczne, takie jak Plus lub minus znak. Operator bitowate i jest reprezentowany z Ampersand i lub z rurą | i xor z Caret ^. Nie, znany również jako operator uzupełniający, jest wskazany przez Tilde ~ .
Prawy operator zmiany biegów używa podwójnego karetu wskazującego prawe >> . Natomiast,Lewa przesunięcie jest wskazywane przez lewy podwójny karet <<. Java zawiera kolejną operację prawej zmiany, pokazana z prawym potrójnym karetem >>> .
Operatorzy bitowate stosują operatory logiczne do każdej pary bitów w swoich operantach. Nie, prawa zmiana i lewa zmiana mają tylko jeden prawdziwy operand; Druga wartość w operacjach Shift to liczba bitów. Aby lepiej zrozumieć, jak działają operatorzy bitowate, jednostka może wizualizować swoje operandy jako cyfry binarne. Na przykład operator uzupełniający odwraca każdy bit swojego pojedynczego operandu do przeciwnego stanu. Jeden staje się zero, a zero staje się jednym. Uzupełnienie 8-bitowej wartości binarnej 00110101 to 11001010.
I operator ma dwa operandy. Po kratce wykonywane są logiczne i działanie za pomocą jednego odpowiedniego bitu z każdego operandu. Wynik każdej operacji bitowej jest umieszczony w tej pozycji bitowej całkowitejwynik. Na przykład i operator przetworzą bit 7 z jednego operandu z bitami 7 drugiego operandu. Wynik zostanie przechowywany w bit 7 z ogólnego wyniku.
W obsłudze oba bity operand muszą być takie, aby wynik był jeden, w przeciwnym razie wynik wynosi zero. Na przykład, jeśli 8-bitowe wartości binarne operandów wynoszą 00110101 i 11110000, wynik wyniesie 00110000. Powszechnym zastosowaniem operatora i operatora jest zerowanie poszczególnych bitów w wyniku. Odbywa się to poprzez umieszczenie zera w tych pozycjach bitów w jednym z operandów.
W lub operacji oba bity operandowe muszą być zera, aby wynik wynosił zero; W przeciwnym razie wynik jest jeden. Powszechnym zastosowaniem operatora lub jest ustawianie niektórych bitów wyniku na te. Odbywa się to poprzez umieszczenie tych w tych pozycjach bitowych w jednym z operandów. W przypadku operacji XOR wynik wynosi zero, jeśli oba bity operandowe wynoszą zero lub jeśli oba bity operandowe są jednym - w przeciwnym razie wynik jest jeden.
lewa zmiana aND PRAWA Zmiana przesuń bity w operandu w lewo lub w prawo przez określoną liczbę pozycji bitowych. Logiczne przesunięcie prawe przesuwa się zero w lewym bit jako część zmiany. Arytmetyka prawej zmiany kopiuje najbardziej lewy bit - bit znaku - przed przesunięciem w tę samą pozycję po przesunięciu. Oryginalny bit jest również przesunięty w prawo wraz z resztą. Każdy typ lewego przesunięcia przesuwa się zero w prawy bit.
Gdy operand jest przesunięty w prawo, prawy bit przed zmianą jest po prostu wyrzucony. Podobnie, lewy bit przed lewą zmianą zostanie usunięty. Nie owija się do drugiego końca operandu.
Operacje zmiany biegów bitowate są zależne od języka i implementacji. Na przykład w C i C ++, >> i << wykonują zmiany logiczne, jeśli operand jest niezbadaną liczbą całkowitą. Jeśli operand jest podpisaną liczbą całkowitą, prawdopodobne jest, że zamiast tego zostanie wykonana zmiana arytmetyczna. W Javie wszystkie operandy są uważane za podpisane i arytmZmiany etyczne są zawsze wykonywane z >> i <<. Operator >>> jest używany do logicznego przesunięcia prawej, ale nadal możliwe jest przypadkowe wykonanie arytmetycznej zmiany prawej bez ostrożnego typu.
Powikłaniamogą również pojawić się, gdy operandy mają różne długości bitów lub gdy niektóre są podpisane, a niektóre niepodpisane. Operatorzy bitowate i stałe liczbowe w środku złożonego wyrażenia nie mogą być oceniane zgodnie z przewidywaniami. Należy zachować ostrożność, aby określić rozmiar i podpisać/niepodpisany charakter każdej ilości w wyrażeniu. Można to zrobić za pomocą ostrożnych przypisań typu typu lub tymczasowego do określonych typów zmiennych w kodzie programu.