title: Python: confusion between types and dtypes
body: <p>Suppose I enter:</p>
  
  <pre><code>a = uint8(200)
  a*2
  </code></pre>
  
  <p>Then the result is 400, and it is recast to be of type uint16.</p>
  
  <p>However:</p>
  
  <pre><code>a = array([200],dtype=uint8)
  a*2
  </code></pre>
  
  <p>and the result is</p>
  
  <pre><code>array([144], dtype=uint8)
  </code></pre>
  
  <p>The multiplication has been performed modulo 256, to ensure that the result stays in one byte. </p>
  
  <p>I'm confused about "types" and "dtypes" and where one is used in preference to another.  And as you see, the type may make a significant difference in the output.</p>
  
  <p>Can I, for example, create a single number of dtype uint8, so that operations on that number will be performed modulo 256?  Alternatively, can I create an array of type (not dtype) uint8 so that operations on it will produce values outside the range 0-255?</p>