typedef std::size_t nrs;
uint_fixed& operator*=(const uint_fixed& a) //! für endianess und 3er klasse
{
uint_fixed tmp(*this);
std::memset(number, 0u, array_size*sizeof(nrs);
for(nrs i(0u);i!=array_size;++i)
{
for(nrs j(0u);j!=bpn;++j)
{
if(a.number[i] & (1u<<j) )
{
for(nrs l(i);l!=array_size;++l) //stimmt das so, erst mit dem i-ten element anzufagen?
{
number[l]+=tmp.number[l];
if(number[l]<tmp.number[l])
for(nrs m(l+1u);m!=array_size;++m)
if(++number[m]) break;
}
}
for(nrs k(i);k!=array_size-1u;++k)
{
tmp.number[k]>>=1u;
tmp.number[k]|=(tmp.number[k+1u]<<(bpn-1u));
}
tmp.number[array_size-1u]>>=1u;
}
}
return *this;
}