It moves the bits of a number to the left by a specified number of positions, effectively multiplying the number by 2 for each shift.
Click to reveal answer
beginner
What is the effect of the right shift operator (>>) in C?
It moves the bits of a number to the right by a specified number of positions, effectively dividing the number by 2 for each shift (for unsigned numbers).
Click to reveal answer
beginner
Explain what happens when you do: int x = 4; int y = x << 1;
The value of x (4) is shifted left by 1 bit, which multiplies it by 2. So y becomes 8.
Click to reveal answer
intermediate
What is a potential risk when using left shift on signed integers?
Shifting bits into the sign bit can cause undefined behavior or unexpected negative values.
Click to reveal answer
intermediate
How does right shift behave differently for signed and unsigned integers in C?
For unsigned integers, right shift fills with zeros (logical shift). For signed integers, it may fill with the sign bit (arithmetic shift), preserving the sign.
Click to reveal answer
What is the result of 3 << 2 in C?
A12
B6
C1
D8
✗ Incorrect
3 in binary is 00000011. Shifting left by 2 bits gives 00001100, which is 12.
What does the right shift operator (>>) do to the bits of an unsigned integer?
AFills left bits with zeros
BFills left bits with ones
CReverses the bits
DSwaps the bits
✗ Incorrect
Right shift on unsigned integers fills the left bits with zeros (logical shift).
Which operator would you use to multiply an integer by 8 using bit shifts?
A<< 2
B>> 3
C<< 3
D>> 2
✗ Incorrect
Shifting left by 3 bits multiplies the number by 2^3 = 8.
What happens if you left shift a signed integer into its sign bit?
ANo change
BAlways zero
CAlways positive
DUndefined behavior or negative value
✗ Incorrect
Shifting into the sign bit can cause undefined behavior or change the sign unexpectedly.
If int x = -16; what might x >> 2 do?
ADivide by 4 and fill with zeros
BDivide by 4 and keep the sign
CMultiply by 4
DCause a compile error
✗ Incorrect
Right shift on signed integers usually performs arithmetic shift, preserving the sign.
Explain how left shift and right shift operators work in C and give a simple example for each.
Think about how shifting bits changes the number's value.
You got /4 concepts.
What are the differences in behavior of right shift on signed versus unsigned integers in C?
Consider how negative numbers are handled.
You got /4 concepts.
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
Step 1: Understand left shift operation
The left shift operator moves all bits in the number to the left by the specified count.
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.
Final Answer:
Moves bits to the left, multiplying the number by powers of two -> Option A
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
Step 1: Identify the right shift operator in C
The right shift operator is >> and requires spaces or no spaces around it.
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.
Final Answer:
x >> 3; -> Option B
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
Step 1: Understand the initial value of x
x is 4, which in binary is 00000100.
Step 2: Apply left shift by 2 bits
Shifting left by 2 bits multiplies 4 by 2^2 = 4 * 4 = 16.
Final Answer:
16 -> Option D
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
Step 1: Check syntax line by line
The line int b = a >> 2 is missing a semicolon at the end.
Step 2: Verify other parts
The operator >> is correct, printf uses %d for int, and b is declared properly.
Final Answer:
Missing semicolon after right shift operation -> Option C
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
Step 1: Calculate left shift (x << 3)
Left shifting 1 by 3 bits multiplies 1 by 2^3 = 8.
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.
Final Answer:
4 -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.