function multiplyUnsigned(number1, number2) {
  let result = 0;

  // Let's treat number2 as a multiplier for the number1.
  let multiplier = number2;

  // Multiplier current bit index.
  let bitIndex = 0;

  // Go through all bits of number2.
  while (multiplier !== 0) {
    // Check if current multiplier bit is set.
    if (multiplier & 1) {
      // In case if multiplier's bit at position bitIndex is set
      // it would mean that we need to multiply number1 by the power
      // of bit with index bitIndex and then add it to the result.
      result += (number1 << bitIndex);
    }

    bitIndex += 1;
    multiplier >>= 1;
  }

  return result;
}
Multiply to unsigned numbers using bitwise operator.

The main idea of bitwise multiplication is that every number may be split
to the sum of powers of two:

I.e. 19 = 2^4 + 2^1 + 2^0

Then multiplying number x by 19 is equivalent of:

x * 19 = x * 2^4 + x * 2^1 + x * 2^0

Now we need to remember that (x * 2^4) is equivalent of shifting x left by 4 bits (x << 4).

@param {number} number1
@param {number} number2
@return {number}