Bird
Raised Fist0
Cprogramming~10 mins

Left shift and right shift in C - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Left shift and right shift
Start with number x
↓
Apply left shift x << n
↓
Multiply x by 2^n
↓
Apply right shift x >> n
↓
Divide x by 2^n (floor)
↓
End with new value
Start with a number, shift bits left to multiply by powers of two, shift bits right to divide by powers of two, then get the new value.
Execution Sample
C
int x = 4;
int left = x << 1;
int right = x >> 1;
printf("%d %d", left, right);
This code shifts 4 left by 1 (multiply by 2) and right by 1 (divide by 2), then prints the results.
Execution Table
StepOperationValue BeforeShift AmountValue AfterExplanation
1Initialize xN/AN/A4Start with x = 4
2Left shift x << 14 (binary 0100)18 (binary 1000)Shifts bits left by 1, multiplies by 2
3Right shift x >> 14 (binary 0100)12 (binary 0010)Shifts bits right by 1, divides by 2 (floor)
4Print resultsN/AN/A8 2Outputs left and right shift results
💡 All operations done, program ends after printing.
Variable Tracker
VariableStartAfter Left ShiftAfter Right ShiftFinal
x4444
leftN/A888
rightN/AN/A22
Key Moments - 3 Insights
Why does left shifting by 1 multiply the number by 2?
Because shifting bits left moves all bits one place higher, which doubles the value (see execution_table step 2).
Why does right shifting by 1 divide the number by 2 and round down?
Because shifting bits right moves bits one place lower, effectively dividing by 2 and dropping any remainder (see execution_table step 3).
Does the original variable x change after shifting?
No, shifting creates new values stored in separate variables (left and right), x remains unchanged (see variable_tracker).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'left' after step 2?
A4
B8
C2
D16
💡 Hint
Check the 'Value After' column in step 2 of execution_table.
At which step does the value become 2 after shifting?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look for 'Value After' column where value is 2 in execution_table.
If we change x to 8, what would be the value of 'right' after right shift by 1?
A16
B8
C4
D2
💡 Hint
Right shift divides by 2, so half of 8 is 4 (see concept_flow and execution_table logic).
Concept Snapshot
Left shift (x << n) moves bits left n times, multiplying x by 2^n.
Right shift (x >> n) moves bits right n times, dividing x by 2^n (floor).
Original variable stays unchanged unless assigned.
Useful for fast multiplication/division by powers of two.
Shifts work on binary representation of numbers.
Full Transcript
This lesson shows how left and right bit shifts work in C. We start with a number x. Left shifting x by 1 moves bits left, doubling the number. Right shifting x by 1 moves bits right, halving the number and rounding down. The code example uses x=4, shifts left and right by 1, and prints results 8 and 2. Variables left and right hold shifted values; x stays 4. The execution table traces each step with values and explanations. Key points clarify why shifting multiplies or divides by powers of two and that original variables don't change unless reassigned. The quiz tests understanding of values after shifts and effects of changing x.

Practice

(1/5)
1. What does the left shift operator << do to an integer in C?
easy
A. Moves bits to the left, multiplying the number by powers of two
B. Moves bits to the right, dividing the number by powers of two
C. Reverses the bits of the number
D. Sets all bits to zero

Solution

  1. Step 1: Understand left shift operation

    The left shift operator moves all bits in the number to the left by the specified count.
  2. Step 2: Effect on the number's value

    Each left shift multiplies the number by 2, so shifting left by n multiplies by 2^n.
  3. Final Answer:

    Moves bits to the left, multiplying the number by powers of two -> Option A
  4. Quick Check:

    Left shift = multiply by 2^n [OK]
Hint: Left shift multiplies by 2 to the power of shift count [OK]
Common Mistakes:
  • Confusing left shift with right shift
  • Thinking left shift divides the number
  • Assuming left shift reverses bits
2. Which of the following is the correct syntax to shift the integer variable x right by 3 bits in C?
easy
A. x >>> 3;
B. x >> 3;
C. x << 3;
D. x >>3

Solution

  1. Step 1: Identify the right shift operator in C

    The right shift operator is >> and requires spaces or no spaces around it.
  2. Step 2: Check syntax correctness

    x >> 3; is correct syntax. x << 3; is left shift, x >>> 3; is invalid in C, and x >>3 is missing a semicolon.
  3. Final Answer:

    x >> 3; -> Option B
  4. Quick Check:

    Right shift syntax = x >> n; [OK]
Hint: Right shift uses >> with semicolon to end statement [OK]
Common Mistakes:
  • Using >>> which is not valid in C
  • Confusing left shift << with right shift >>
  • Omitting semicolon at end
3. What is the output of the following C code?
int x = 4;
int y = x << 2;
printf("%d", y);
medium
A. 0
B. 1
C. 8
D. 16

Solution

  1. Step 1: Understand the initial value of x

    x is 4, which in binary is 00000100.
  2. Step 2: Apply left shift by 2 bits

    Shifting left by 2 bits multiplies 4 by 2^2 = 4 * 4 = 16.
  3. Final Answer:

    16 -> Option D
  4. Quick Check:

    4 << 2 = 16 [OK]
Hint: Left shift by n multiplies by 2^n [OK]
Common Mistakes:
  • Calculating 4 << 2 as 8 instead of 16
  • Confusing left shift with right shift
  • Ignoring the shift count
4. Find the error in this C code snippet:
int a = 32;
int b = a >> 2
printf("%d", b);
medium
A. Wrong operator used for right shift
B. Incorrect printf format specifier
C. Missing semicolon after right shift operation
D. Variable b is not declared

Solution

  1. Step 1: Check syntax line by line

    The line int b = a >> 2 is missing a semicolon at the end.
  2. Step 2: Verify other parts

    The operator >> is correct, printf uses %d for int, and b is declared properly.
  3. Final Answer:

    Missing semicolon after right shift operation -> Option C
  4. Quick Check:

    Every statement needs semicolon [OK]
Hint: Check for missing semicolons after shift operations [OK]
Common Mistakes:
  • Assuming >> is invalid operator
  • Thinking printf format is wrong
  • Ignoring missing semicolon errors
5. Given int x = 1;, what is the value of y after this operation?
int y = (x << 3) >> 1;
hard
A. 4
B. 8
C. 16
D. 2

Solution

  1. Step 1: Calculate left shift (x << 3)

    Left shifting 1 by 3 bits multiplies 1 by 2^3 = 8.
  2. Step 2: Calculate right shift of result by 1

    Right shifting 8 by 1 bit divides 8 by 2^1 = 2, so 8 / 2 = 4.
  3. Final Answer:

    4 -> Option A
  4. Quick Check:

    (1 << 3) >> 1 = 8 >> 1 = 4 [OK]
Hint: Left shift then right shift: multiply then divide by powers of two [OK]
Common Mistakes:
  • Calculating (1 << 3) as 16
  • Ignoring right shift effect
  • Mixing up shift directions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard