Spostamento aritmetico e spostamento logico in c

Spostamento aritmetico e spostamento logico in c
Le tecniche di manipolazione dei bit, come lo spostamento logico e lo spostamento aritmetico, vengono utilizzate per alterare i bit. Un spostamento logico sinistro a una posizione si muove di tutto a sinistra attraverso uno. Il suo bit più importante viene rimosso e il bit meno rilevante viene sostituito da 0. Un spostamento logico a destra a una posizione si avvicina di tutto attraverso uno a destra. Il bit meno importante viene rimosso e l'operando viene ripristinato da 0.

Un'unica posizione, il turno aritmetico a sinistra si trasferisce di tutto a sinistra da solo uno. È lo stesso dello spostamento logico sinistro. Un cambio aritmetico a una posizione a una posizione passa ogni bit a destra attraverso uno. Quando si moltiplicano o si dividono un numero intero, è possibile utilizzare funzioni di spostamento aritmetico. Moltiplicare un numero per 2n, in cui n rappresenta il numero di posizioni bit scambiate, è il risultato di un metodo di spostamento a sinistra. Dividi un numero per 2n è il risultato di un metodo di cambio a destra, in cui n rappresenta il numero di posizioni bit commutate.

Questo articolo dimostrerà alcune tecniche utilizzando le funzioni di spostamento bitwise in c.

Spostare l'intero a sinistra usando il << Operator

Ogni lingua include tecniche di spostamento bitwise, che trasferiscono ogni bit di un numero specificato dal numero richiesto di posizioni. Per valutare correttamente l'impatto di questi metodi, introdurremmo la funzione binaria nella situazione precedente, che mostra la forma binaria del numero fornito.

Questo metodo è creato solo per funzionare con numeri a 32 bit. Il seguente codice illustra uno spostamento di quattro sinistra e presenta i corrispondenti valori numerici:

#includere
#includere
vuoto binario (Num non firmato)

non firmato J;
per (j = 1 < 0; j /= 4)
(Num & J) ? printf ("1"): printf ("0");

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

Innanzitutto, introduciamo due biblioteche e . Nel passaggio successivo, definiamo la funzione binaria (). Nel frattempo, dichiariamo un parametro "NUM non firmato" alla funzione binaria (). Utilizziamo un ciclo per. Qui, inizializziamo una variabile all'interno per loop. Il loop si itera fino a quando il valore non raggiunge 31. Ora impieghiamo la funzione principale () al di fuori del corpo della funzione binaria (). Viene inizializzata una variabile con un tipo di dati interi. Allo stesso modo, creiamo un costruttore con un tipo di dati di carattere.

Dichiariamo una variabile "num1" e specifichiamo il suo valore. Successivamente, questo valore viene fornito come argomento alla funzione binaria (). La funzione printf () viene utilizzata per mostrare il valore binario del numero definito. IL << 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.

Utilizzare il turno sinistro per moltiplicare un numero con quattro:

Utilizzeremo il turno di sinistra << 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.

Un cambio di posizione specifico porta alla moltiplicazione; Di conseguenza, possiamo spostarci ovunque per acquisire la moltiplicazione appropriata.

#includere
#includere
vuoto binario (Num non firmato)

non firmato k;
per (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);
usit (exit_success);

All'inizio del programma due file di intestazione e sono inclusi poco prima del metodo Dichiarazione del binario (). All'interno della funzione binaria () per il loop viene utilizzato, la variabile 'k' è inizializzata qui. La funzione printf () viene anche utilizzata per stampare il valore sotto forma di 1s e 0. Inoltre, definiamo la funzione principale (). Questa funzione contiene due parametri, tra cui una variabile e un costruttore. Il tipo di dati di questa variabile e costruttore non è identico.

Inoltre, creiamo un'altra variabile e impostiamo il valore di questa variabile. Applichiamo una funzione print () per dimostrare il valore binario effettivo del numero dato. Nel passaggio successivo, utilizziamo il << 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.

Sposta i numeri interi a destra, usa l'operatore >>

Vale la pena ricordare che i numeri firmati e non firmati sono espressi in modo diverso. Quelli firmati, in particolare, sono interpretati come due numeri interi del complemento. Quindi, il tipo più diffuso di valore negativo è 1, che viene definito bit firmato, mentre i numeri positivi iniziano con 0. Di conseguenza, se trasferiamo analiticamente le cifre negative giuste, rimuoviamo il segno e otteniamo il numero positivo. 2
Pertanto, dovremmo distinguere tra spostamenti logici e aritmetici, con il primo che mantiene la sua parte più importante. Qui, abbiamo eseguito lo spostamento aritmetico e mantenuto il valore negativo del numero, come dimostrato nel seguente esito di esempio:

#includere
#includere
vuoto binario (Num non firmato)

non firmato L;
per (l = 1> = 5;
binario (num2); printf (": %d \ n", num2);
usit (exit_success);

Qui, dobbiamo integrare le librerie richieste e . La funzione binaria () è chiamata nel prossimo passaggio. Inoltre, introduciamo un argomento "NUM non firmato" all'interno di quel metodo binario (). Abbiamo usato per loop e all'interno per loop, dobbiamo definire una variabile. Abbiamo usato la funzione principale () al di fuori del corpo della funzione binaria (). Facciamo un costruttore con un tipo di dati di carattere e dichiariamo una variabile con un tipo di dati interi.

Inoltre, una variabile chiamata "NUM1" viene inizializzata e allocata sul valore. Questo valore viene quindi passato al metodo binario () come parametro. La funzione printf () visualizza il valore binario di un determinato numero. L'operatore >> viene utilizzato per spostare le cifre a destra applicandole al valore della variabile "NUM1". Dal momento che si muovevano le cifre, le funzioni binarie () e printf () sono state applicate per stampare il risultato. Quindi il metodo Exit () viene utilizzato per terminare il programma.

Conclusione

Abbiamo discusso delle specifiche del cambiamento aritmetico e logico nella lingua C. Abbiamo osservato come spostare i numeri interi a destra con l'aiuto dell'operatore >> e a sinistra usando il << operator. Here, we also use the left shift to multiply a number.