title: Right shifting a carry save number
body: <p>Carry save arithmetic uses twice the number of bits, one word to hold the "virtual sum", one to hold the "virtual carry" to avoid propagating the carry which is the limiting factor in hardware speed.</p>
  
  <p>I have a system that requires dividing these numbers by powers of two, but simply right shifting both numbers does not work in all cases eg. two 16 bit carry save numbers, which you add to produce 4000, C001 is the Virtual Sum, 7FFF is the virtual carry.</p>
  
  <pre><code>C001 + 7FFF = 4000  (discard overflow bits)
  but after right shift
  6000 + 3FFF = 9FFF   (when it should be 2000)
  </code></pre>
  
  <p>In short: How do you divide a carry save number by a power of two? (While keeping it a carry save number)</p>