# Right Shift Negative Numbers in C++

We are going to learn how to right shift negative numbers in C++. Right shift is denoted by the operator “`>>`

“.

Right shifting takes two operands (two numbers) and right shifts the bits of the first operand by the amount of the value of the second operand.

#### Syntax

`x>>y`

This will shift the variable x by y amount to the right. We take these variables as binary numbers, i.e, the representation of a number in 0s and 1s.

**Example**

Let us take a number as -25 and we are interested in right shifting this value. -25 in binary is 11100111. Our common understanding would be to shift this binary value to the right and add a 0 as MSB(Most significant bit). But this is the wrong approach. The MSB bit must be fixed at all times. With this approach, 1 at MSB will be fixed for our example.

Thus the right shifted value of -25 will be 11110011 which is -13 when converted back to decimal.

#### Example Code

#include<iostream> using namespace std; void print_bin(char num) { int i; for(i=7; i>=0; i--) { if(num & 1<<i) cout<<"1"; else cout<<"0"; } } int main() { char num1 = -25; char i; for(i=0; i<8; i++) { print_bin(num1 >> i); cout<<endl; } return 0; }

Output:

#### Explanation

- Whenever we get a right shift, we have to check whether the number is even or odd.
- If
**even**, divide the number by 2. - If
**odd**, divide the number by 2 and add 1 to the result. - A function
**print_bin()**is defined to convert the decimal number into a binary and then check the MSB. - The function checks and retains the MSB and shifts the other 7 bits.
- In the main() function, num1 is defined as a character to store the binary converted value.
- For loop is run 8 times to show each and every bit is shifted. Thus, we have 8 answers.
- Each time the value is right shifted once.

## Leave a Reply