Aritmetisk skift og logisk skifte i C

Aritmetisk skift og logisk skifte i C
Bitmanipulasjonsteknikker, for eksempel logisk skift og aritmetisk skift brukes til å endre bitene. En enposisjon venstre logisk skift beveger seg hver gang til venstre gjennom en. Den mest betydningsfulle biten fjernes, og den minst relevante biten erstattes av 0. En riktig logisk skift i en posisjon bytter gjennom en til høyre. Den minst viktige biten blir fjernet, og operanden blir gjenopprettet med 0.

En enposisjon igjen aritmetisk skift overføres hver til venstre for bare en. Det er det samme som venstre logisk skift. En høyre aritmetisk skift i en stilling bytter til høyre gjennom en. Når du multipliserer eller deler et heltallnummer, kan aritmetiske skiftfunksjoner brukes. Å multiplisere et tall med 2n, der n representerer antall bits bit -lokasjoner, er resultatet av en venstre skiftemetode. Del et tall med 2N er resultatet av en riktig skiftmetode, der N representerer antallet bitbitssteder.

Denne artikkelen vil demonstrere noen teknikker ved bruk av bitvis skiftfunksjoner i C.

Flytt heltallet til venstre ved å bruke << Operator

Hvert språk inkluderer bitvis skiftende teknikker, som flytter hver bit av et tall som er spesifisert av det nødvendige antall lokasjoner. For å evaluere virkningen av disse metodene riktig, vil vi introdusere den binære funksjonen i foregående situasjon, som viser den binære formen for det medfølgende tallet.

Denne metoden er bare bygget for å operere med 32-biters tall. Følgende kode illustrerer et skift på fire venstre og presenterer de tilsvarende numeriske verdiene:

#inkludere
#inkludere
ugyldig binær (usignert num)

usignert j;
for (j = 1 < 0; j /= 4)
(Num & j) ? printf ("1"): printf ("0");

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

Først introduserer vi to biblioteker og . I neste trinn definerer vi den binære () funksjonen. I mellomtiden erklærer vi en parameter "usignert num" til den binære () funksjonen. Vi bruker en for loop. Her initialiserer vi en variabel inne for loop. Løkken itererer til verdien når 31. Nå bruker vi hovedfunksjonen () utenfor kroppen til den binære () -funksjonen. En variabel med en heltalldatatype initialiseres. Tilsvarende oppretter vi en konstruktør med en karakterdatatype.

Vi erklærer en variabel “num1” og spesifiserer verdien. Deretter gis denne verdien som et argument til den binære () funksjonen. Printf () -funksjon brukes til å vise den binære verdien av det definerte tallet. De << 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.

Bruk venstre skift for å multiplisere et tall med fire:

Vi vil bruke venstre skift << 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.

Et spesifikt posisjonsskifte fører til multiplikasjon; Følgelig kan vi skifte hvor som helst for å skaffe riktig multiplikasjon.

#inkludere
#inkludere
ugyldig binær (usignert num)

usignert k;
for (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);

I begynnelsen av programmet er to overskriftsfiler og er inkludert rett før erklæringen om binær () -metode. Inne i den binære () -funksjonen for loop brukes, initialiseres variabelen 'K' her. Printf () -funksjonen brukes også til å skrive ut verdien i form av 1s og 0s. I tillegg definerer vi main () -funksjonen. Denne funksjonen har to parametere, inkludert en variabel og en konstruktør. Datatypen til denne variabelen og konstruktøren er ikke identisk.

Videre lager vi en annen variabel og setter verdien av denne variabelen. Vi bruker en utskrift () -funksjon for å demonstrere den faktiske binære verdien av det gitte tallet. I neste trinn bruker vi << 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.

Flytt heltalene til høyre, bruk >> operatøren

Det er verdt å nevne at signerte og usignerte tall uttrykkes annerledes. Signerte, spesielt, tolkes som to komplement heltall. Derfor er den mest utbredte typen negativ verdi 1, som blir referert til som den signerte biten, mens positive tall begynner med 0. Som et resultat, hvis vi analytisk overfører de negative sifrene riktig, fjerner vi tegnet og får det positive tallet. 2
Dermed bør vi skille mellom logiske og aritmetiske skift, med førstnevnte som beholder sin viktigste bit. Her utførte vi det aritmetiske skiftet og beholdt den negative verdien av antallet, som demonstrert i følgende eksempelutfall:

#inkludere
#inkludere
ugyldig binær (usignert num)

usignert L;
for (l = 1> = 5;
binær (num2); printf (": %d \ n", num2);
exit (exit_success);

Her må vi integrere de nødvendige bibliotekene og . Den binære () -funksjonen kalles i neste trinn. I tillegg introduserer vi et "usignert num" -argument innen den binære () metoden. Vi har brukt til loop, og inne for sløyfe, må vi definere en variabel. Vi har brukt hovedfunksjonen () utenfor den binære () funksjonens kropp. Vi lager en konstruktør med en karakterdatatype og erklærer en variabel med en heltalldatatype.

Videre blir en variabel kalt “num1” initialisert og tildelte verdien. Denne verdien sendes deretter til binær () -metoden som en parameter. PRINTF () -funksjonen viser den binære verdien av et gitt tall. Operatøren >> brukes til å flytte sifrene til høyre ved å bruke den på verdien av variabelen “num1”. Siden skifting av sifrene, har de binære () og printf () funksjonene blitt brukt for å skrive ut utfallet. Deretter brukes Exit () -metoden til å avslutte programmet.

Konklusjon

Vi har diskutert detaljene i det aritmetiske og logiske skiftet i C -språket. Vi har observert hvordan vi skal flytte heltallene til høyre ved hjelp av >> operatøren og til venstre ved å bruke << operator. Here, we also use the left shift to multiply a number.