From the C++ Standard (5.8 Shift operators)
1 The shift operators << and >> group left-to-right.
shift-expression:
    additive-expression
    shift-expression << additive-expression
    shift-expression >> additive-expression
The operands shall be of integral or unscoped enumeration type and
  integral promotions are performed. The type of the result is that of
  the promoted left operand. The behavior is undefined if the right
  operand is negative, or greater than or equal to the length in
  bits of the promoted left operand.
Take into account that the behavior also will be undefined if the right operand is not greater or equal to the length in bits of the left operand but can touch the sign bit because the integer literal 1 has the type signed int.
As for this function call pow(2, 50) then there is used some algorithm that calculates the power.