1. typedef std::size_t nrs;
  2.  
  3. uint_fixed& operator*=(const uint_fixed& a) //! für endianess und 3er klasse
  4. {
  5. uint_fixed tmp(*this);
  6. std::memset(number, 0u, array_size*sizeof(nrs);
  7. for(nrs i(0u);i!=array_size;++i)
  8. {
  9. for(nrs j(0u);j!=bpn;++j)
  10. {
  11. if(a.number[i] & (1u<<j) )
  12. {
  13. for(nrs l(i);l!=array_size;++l) //stimmt das so, erst mit dem i-ten element anzufagen?
  14. {
  15. number[l]+=tmp.number[l];
  16. if(number[l]<tmp.number[l])
  17. for(nrs m(l+1u);m!=array_size;++m)
  18. if(++number[m]) break;
  19. }
  20. }
  21. for(nrs k(i);k!=array_size-1u;++k)
  22. {
  23. tmp.number[k]>>=1u;
  24. tmp.number[k]|=(tmp.number[k+1u]<<(bpn-1u));
  25. }
  26. tmp.number[array_size-1u]>>=1u;
  27. }
  28. }
  29. return *this;
  30. }