## Why is this an issue?

Numbers can be shifted with the `<<` and `>>` operators, but the right operand of the operation needs to be an `int` or a type that has an implicit conversion to `int`. However, when the left operand is dynamic, the compiler’s type checking is turned off, so you can pass anything to the right of a shift operator and have it compile. And if the argument can’t be implicitly converted to `int` at runtime, then a RuntimeBinderException will be raised.

    dynamic d = 5;
    var x = d >> 5.4;   // Noncompliant
    x = d << null;      // Noncompliant
    x <<= new object(); // Noncompliant

## Resources

### Documentation

- Shift Operators
- Implicit Conversions
- RuntimeBinderException Class
- Using type dynamic