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