top of page

10.7. Verilog Shift Operators: Efficient Data Movement and Arithmetic

Introduction

 

Shift operators move bits left or right within a vector, and they're among the most hardware-efficient operations in digital design. Shifts can multiply or divide by powers of 2, align data, extract bit fields, and implement barrel shifters—all with minimal hardware cost compared to arithmetic operators.

At VLSI Mentor, we emphasize that understanding when and how to use shift operators can dramatically improve your design's efficiency, replacing expensive multipliers and dividers with simple wire routing.

10.7.1. Shift Operators Overview

SO1.png

10.7.2. Logical Left Shift (<<)

Operation

Shifts bits left, filling vacated positions with zeros.

Before: 8'b00001101 (13)

   <<2: 8'b00110100 (52)

        └─┘ zeros filled

Result = Original × 2^2 = 13 × 4 = 52

Examples

Verilog

Key Point: `data << n` = `data * 2^n` (much more efficient!)

10.7.3. Logical Right Shift (>>)

Operation

Shifts bits right, filling vacated positions with zeros.

Before: 8'b01101000 (104)

   >>2: 8'b00011010 (26)

        zeros ─┘

Result = Original / 2^2 = 104 / 4 = 26

Examples

Verilog

10.7.4. Arithmetic Right Shift (>>>)

Operation

Shifts bits right, filling vacated positions with sign bit(for signed numbers).

 

Positive: 8'sb00110100 (+52)

   >>>2:  8'sb00001101 (+13)

          zeros ─┘

 

Negative: 8'sb11001100 (-52)  

   >>>2:  8'sb11110011 (-13)

          sign bits ─┘

Examples

Verilog

Critical: Use `>>>` for signed numbers, `>>` for unsigned!

10.7.5. Arithmetic Left Shift (<<<)

Note: Arithmetic left shift is identicalto logical left shift.

Verilog

10.7.6. Shift vs Multiply/Divide

Efficiency Comparison

Verilog

Hardware Cost:
 

- Multiply/Divide: Large area, slow
 

- Shift: Minimal area (just wires), very fast

10.7.7. Variable Shift Amounts

Verilog

Note: Variable shifts synthesize to barrel shifters (more complex than constant shifts).

10.7.8. Practical Applications

Application 1: Multiply/Divide by Powers of 2

Verilog

Application 2: Barrel Shifter

Verilog

Application 3: Bit Alignment

Verilog

Application 4: Extract Bit Fields

Verilog

Application 5: Priority Encoder

Verilog

Application 6: Efficient Multiply by Constant

Verilog

10.7.9. Shift Direction Comparison

Verilog

10.7.10. Common Pitfalls

Pitfall 1: Using >> on Signed Numbers

Verilog

Pitfall 2: Overflow in Left Shift

Verilog

Pitfall 3: Not Considering Truncation

Verilog

10.7.11. Hardware Implementation

Constant Shift (Very Efficient)

Verilog

Variable Shift (Barrel Shifter)

Verilog

Best Practices

✅ Use shifts for power-of-2 multiply/divide 

✅ Use >>> for signed right shifts 

✅ Constant shifts are free(just wiring)  

✅ Document what shift represents: `// Multiply by 4`  

✅ Check for overflowin left shifts  

❌ Don't use * or / for powers of 2 

❌ Don't use >> on signed numbers 

❌ Don't forget truncationin right shifts  

Relational operator

Equality operator

© Copyright 2025 VLSI Mentor. All Rights Reserved.©

Connect with us

  • Instagram
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube
bottom of page