Przesunięcie arytmetyczne i logiczne przesunięcie w C

Przesunięcie arytmetyczne i logiczne przesunięcie w C
Techniki manipulacji bitami, takie jak przesunięcie logiczne i przesunięcie arytmetyczne, stosuje się do zmiany bitów. Lewa po lewej stronie logiczna przesunięcie przesuwa się każda w lewo przez jeden. Jego najbardziej doniosłe bit jest usuwany, a najmniej istotny bit jest zastępowany przez 0. Prawa logiczna jedna pozycja przełącza się w każdym odległości po prawej stronie. Najmniej ważny bit jest usuwany, a operand jest przywracany przez 0.

Lewa po lewej stronie arytmetycznej przenosi się w lewo w lewo o jeden tylko jeden. Jest to samo, co lewa logiczna zmiana. Jedna pozycja prawej zmiany arytmetycznej przełącza się w prawo przez jeden. Podczas mnożenia lub dzielenia liczby całkowitej można zastosować funkcje przesunięcia arytmetycznego. Mnożenie liczby przez 2n, w której n reprezentuje liczbę zamienionych lokalizacji bitów, jest wynikiem metody przesunięcia lewego. Podziel liczbę przez 2n to wynik metody prawej zmiany, gdzie n reprezentuje liczbę przełączanych lokalizacji bitów.

W tym artykule pokazano niektóre techniki wykorzystujące funkcje zmiany biegów w C.

Przesuń liczbę całkowitą w lewo, używając << Operator

Każdy język obejmuje techniki przesuwania się bitwów, które przenoszą każdą liczbę określoną przez wymaganą liczbę lokalizacji. Aby właściwie ocenić wpływ tych metod, wprowadzilibyśmy funkcję binarną w poprzedniej sytuacji, która wyświetla formę binarną podanej liczby.

Ta metoda jest zbudowana tylko do działania z 32-bitowymi cyframi. Poniższy kod ilustruje zmianę czterokierunkową i przedstawia odpowiednie wartości liczbowe:

#włączać
#włączać
void binary (niepodpisana num)

niepodpisany J;
dla (j = 1 < 0; j /= 4)
(num & j) ? printf („1”): printf („0”);

int main (int argc, char *argv [])
int num1 = 456;
binarny (num1); printf (": %d \ n", num1);
Num1 <<= 4;
binarny (num1); printf (": %d \ n", num1);
exit (exit_success);

Najpierw wprowadzamy dwie biblioteki i . W następnym kroku definiujemy funkcję binarną (). Tymczasem deklarujemy parametr „niepodpisany NUM” do funkcji binary (). Używamy pętli. Tutaj zainicjujemy zmienną w pętli. Pętla iteruje, aż wartość osiągnie 31. Teraz stosujemy funkcję main () poza ciałem funkcji binarnej (). Zmienna o typach danych całkowitych jest inicjowana. Podobnie tworzymy konstruktor z typem danych znaków.

Deklarujemy zmienną „NUM1” i określamy jej wartość. Następnie ta wartość jest dostarczana jako argument funkcji binary (). Funkcja printf () służy do wyświetlania wartości binarnej zdefiniowanej liczby. << operator is applied to the value of the variable “num1”. Therefore, it is used to adjust the digits to the left. Now, the binary() and print() methods are utilized to print the result after shifting the numbers.

Użyj lewej zmiany, aby pomnożyć liczbę z czterema:

Wykorzystamy lewą zmianę << more effective operation to accomplish the multiplication by four. It's important to note that there is no distinction between the logical and arithmetic shifts while moving left.

Określone przesunięcie pozycji prowadzi do mnożenia; W związku z tym możemy przenieść się w dowolnym miejscu, aby uzyskać odpowiednie mnożenie.

#włączać
#włączać
void binary (niepodpisana num)

niepodpisany k;
dla (k = 1 << 31; k > 0; k /= 4)
(num & k) ? printf („1”): printf („0”);

int main (int argc, char *argv [])
int num1 = 678;
printf („%d \ n”, num1);
Num1 <<= 1;
printf („%d x 4 \ n”, num1);
exit (exit_success);

Na początku programu dwa pliki nagłówka i są zawarte tuż przed metodą Deklaracji Binary (). Wewnątrz funkcji binarnej () dla pętli jest stosowana tutaj, zmienna „k” jest tutaj inicjowana. Funkcja printf () służy również do wydrukowania wartości w postaci 1 i 0s. Ponadto definiujemy funkcję Main (). Ta funkcja zawiera dwa parametry, w tym zmienna i konstruktor. Typ danych tej zmiennej i konstruktora nie jest identyczny.

Ponadto tworzymy inną zmienną i ustawiamy wartość tej zmiennej. Stosujemy funkcję print (), aby wykazać rzeczywistą wartość binarną danej liczby. W następnym kroku używamy << operator to move the digits to the left of the defined value. Once again, the printf() method gets the output after shifting the digits and multiplying the value by 4. In this way, we have to end the code.

Przesuń liczby całkowite w prawo, użyj operatora >>

Warto wspomnieć, że podpisane i niepodpisane liczby są wyrażane inaczej. W szczególności podpisane są interpretowane jako dwa komplementy liczb całkowitych. Stąd najbardziej rozpowszechnionym rodzajem wartości ujemnej jest 1, co jest określane jako podpisany bit, podczas gdy liczby dodatnie zaczynają się od 0. W rezultacie, jeśli analitycznie przesyłamy cyfry ujemne w prawo, usuwamy znak i uzyskujemy liczbę dodatnią. 2
Dlatego powinniśmy rozróżnić zmiany logiczne i arytmetyczne, przy czym poprzedni zachowuje swój najważniejszy kawałek. Tutaj wykonaliśmy przesunięcie arytmetyczne i zachowaliśmy wartość ujemną liczby, jak pokazano w poniższym wyniku:

#włączać
#włączać
void binary (niepodpisana num)

niepodpisany L;
dla (l = 1> = 5;
binarny (num2); printf (": %d \ n", num2);
exit (exit_success);

Tutaj musimy zintegrować wymagane biblioteki i . Funkcja binarna () jest wywoływana w następnym kroku. Dodatkowo wprowadzamy argument „niepodpisany NUM” w ramach tej metody binary (). Użyliśmy pętli i w środku do pętli, musimy zdefiniować zmienną. Użyliśmy funkcji Main () poza ciałem funkcji binarnej (). Tworzymy konstruktor z typem danych znaków i deklarujemy zmienną z typem danych liczb całkowitych.

Ponadto zmienna o nazwie „Num1” jest inicjowana i przydzielana wartość. Ta wartość jest następnie przekazywana do metody binarnej () jako parametr. Funkcja printf () wyświetla wartość binarną danej liczby. Operator >> służy do przenoszenia cyfr po prawej stronie poprzez zastosowanie go do wartości zmiennej „NUM1”. Od czasu zmiany cyfr zastosowano funkcje binarne () i printf (). Następnie do zakończenia programu stosuje się metodę Exit ().

Wniosek

Omówiliśmy szczegóły przesunięcia arytmetyki i logiki w języku C. Zaobserwowaliśmy, jak przesunąć liczby całkowite w prawo z pomocą operatora >> i po lewej stronie za pomocą << operator. Here, we also use the left shift to multiply a number.