title: Arithmetic shift acts as a logical shift, regardless of the signed variable
body: <p>I've got a register declared as so:</p>
  
  <pre><code>logic signed [15:0][2:0][15:0] registers;
  </code></pre>
  
  <p>When I place a 2's compliment number into the array and arithmetically shift the number, it logical shifts instead:</p>
  
  <pre><code>registers[0][0] = 16'b1000000000000000;
  registers[0][0] = registers[0][0]&gt;&gt;&gt;2;
  </code></pre>
  
  <p>Apparently, the system will logical shift instead of arithmetically shift if the number is not signed. However as you can clearly see, 'registers' is definitely signed.</p>
  
  <p>Does anybody know what I might be missing here?</p>
  
  <p>Thanks!</p>