unsigned int i_mul( unsigned char x, unsigned char y ) { unsigned int yy = y; unsigned int sum = (x & 0x01) ? (yy) : (0); while( x >= 1 ) { x >>= 1; yy <<= 1; if( x & 0x01 ) { sum += yy; } } return sum; }