logo

Venstre Shift og Høyre Shift Operatorer i C/C++

Venstre skift(<<)

Det er en binær operator som tar to tall, venstreforskyver bitene i den første operanden, og den andre operanden bestemmer antall steder som skal skiftes. Med andre ord, venstreskifting av et heltall en med et heltall b betegnet som ' (a< tilsvarer å multiplisere en med 2^b (2 hevet til potens b).

Syntaks:



a << b;>
    a: Første operand b: Andre operand

Eksempel: La oss ta a=5 ; som er 101 i binær form. Nå, hvis a er venstreforskyvd med 2 dvs a=a<<2 deretter en vil bli a=a*(2^2) . Dermed, a=5*(2^2)=20 som kan skrives som 10100.

venstre skift førerfunksjon

C






streng i array i c



// C Program to demonstrate use> // of left shift operator> #include> // Driver code> int> main()> {> >// a = 5(00000101), b = 9(00001001)> >unsigned>char> a = 5, b = 9;> >// The result is 00001010> >printf>(>'a<<1 = %d '>, (a << 1));> >// The result is 00010010> >printf>(>'b<<1 = %d'>, (b << 1));> >return> 0;> }>

>

>

C++




// C++ Program to demonstrate use> // of left shift operator> #include> using> namespace> std;> // Driver code> int> main()> {> >// a = 5(00000101), b = 9(00001001)> >unsigned>char> a = 5, b = 9;> >// The result is 00001010> >cout <<>'a<<1 = '> << (a << 1) << endl;> >// The result is 00010010> >cout <<>'b<<1 = '> << (b << 1) << endl;> >return> 0;> }>

>

>

Produksjon

a<<1 = 10 b<<1 = 18>

Høyre skift(>>)

Det er en binær operator som tar to tall, høyreforskyver bitene i den første operanden, og den andre operanden bestemmer antall steder som skal skiftes. Med andre ord, høyreskifting av et heltall en med et heltall b betegnet som ' (a>>b) ' tilsvarer å dele a med 2^b.

Syntaks:

a>> b;>
    a: Første operand b: Andre operand

Eksempel: la oss ta a=5 ; som er 101 i binær form. Nå, hvis a er høyreforskyvd med 2 dvs. a=a>>2 deretter en vil bli a=a/(2^2) . Dermed, a=a/(2^2)=1 som kan skrives som 01 .

høyre skiftførerfunksjon

C




// C Program to demonstrate> // use of right-shift operator> #include> // Driver code> int> main()> {> >// a = 5(00000101), b = 9(00001001)> >unsigned>char> a = 5, b = 9;> >// The result is 00000010> >printf>(>'a>>1 = %d '>, (a>> 1));> >// The result is 00000100> >printf>(>'b>>1 = %d'>, (b>> 1));> >return> 0;> }>

>

>

C++


java kast unntak



// C++ Program to demonstrate> // use of right-shift operator> #include> using> namespace> std;> // Driver code> int> main()> {> >// a = 5(00000101), b = 9(00001001)> >unsigned>char> a = 5, b = 9;> >// The result is 00000010> >cout <<>'a>>1 = '> <>1)<< endl;> >// The result is 00000100> >cout <<>'b>>1 = '> <>1)<< endl;> >return> 0;> }>

>

>

Produksjon

a>>1 = 2 b>>1 = 4>

Viktige poeng

1. Operatorene for venstreskift og høyreskift skal ikke brukes for negative tall. Resultatet av er udefinert oppførsel hvis noen av operandene er et negativt tall. For eksempel er resultater av både 1>> -1 og 1 << -1 udefinert.

C




// C program to show behaviour of shift operators for> // negative values> #include> int> main()> {> >// left shift for negative value> >printf>(>'2 << -5 = %d '>, (2 << -5));> >// right shift for negative value> >printf>(>'2>> -5 = %d'>, (2>> -5));> >return> 0;> }>

dharmendra alder
>

>

C++




// C++ program to show behaviour of shift operators for> // negative values> #include> using> namespace> std;> int> main()> {> >// left shift for negative value> >cout <<>'2 << -5 = '> << (2 << -5) << endl;> >// right shift for negative value> >cout <<>'2>> -5 = '> <>-5)<< endl;> >return> 0;> }>

>

tur men
>

Produksjon

2 <>-5 = 64>

2. Hvis tallet forskyves mer enn størrelsen på heltallet, er oppførselen udefinert. For eksempel er 1 << 33 udefinert hvis heltall er lagret med 32 biter. For bitforskyvning med større verdier 1ULL<<62 ULL brukes for Unsigned Long Long som er definert ved hjelp av 64 biter som kan lagre store verdier.

C




// c program to demonstrate the behaviour of bitwise> // shift operators for large values> #include> int> main()> {> >int> N = 3;> >// left shift of 65 digits> >printf>(>'3 << 65 = %d'>, (3 << 65));> >return> 0;> }>

>

>

C++




// c++ program to demonstrate the behaviour of bitwise> // shift operators for large values> #include> using> namespace> std;> int> main()> {> >int> N = 3;> >// left shift by 65 digits> >cout <<>'3 << 65'> << (3 << 65) << endl;> >return> 0;> }>

>

>

Produksjon

3 << 65 = 0>

3. Venstre-forskyvningen med 1 og høyreforskyvningen med 1 tilsvarer produktet av det første leddet og 2 til kraften gitt element(1<>3 = 1/pow(2,3)).

C




// C program for the above approach> #include> #include> int> main()> {> >printf>(>'2^5 using pow() function: %.0f '>,>pow>(2, 5));> >printf>(>'2^5 using left shift: %d '>, (1 << 5));> >return> 0;> }> // This code is contributed Prince Kumar>

>

mysql oppdatering bli med
>

C++




// C++ program to get the shifted values using pow()> #include> #include> using> namespace> std;> int> main()> {> >cout <<>'2^5 using pow() function'> <<>pow>(2, 5) << endl;> >cout <<>'2^5 using leftshift'> << (1 << 5) << endl;> >return> 0;> }>

>

>

Produksjon

2^5 using pow() function: 32 2^5 using left shift: 32>

Må lese: Bitvise operatører i C/C++