We have already used the overloaded versions of the >>
and <<
operators that the IO library defines to do input and output. The built-in meaning of these operators is that they perform a bitwise shift on their operands. They yield a value that is a copy of the (possibly promoted) left-hand operand with the bits shifted as directed by the right-hand operand. The right-hand operand must not be negative and must be a value that is strictly less than the number of bits in the result. Otherwise, the operation is undefined. The bits are shifted left (<<
) or right (>>
). Bits that are shifted off the end are discarded:
The left-shift operator (the <<
operator) inserts 0-valued bits on the right. The behavior of the right-shift operator (the >>
operator) depends on the type of the left-hand operand: If that operand is unsigned
, then the operator inserts 0-valued bits on the left; if it is a signed type, the result is implementation defined—either copies of the sign bit or 0-valued bits are inserted on the left.
3.138.123.106