.NH Bit Operators .PP C has several operators for logical bit-operations. For example, .E1 x = x & 0177; .E2 forms the bit-wise .UC AND of .UL x and 0177, effectively retaining only the last seven bits of .UL x\*. Other operators are .E1 .ft R \(or inclusive OR ^ (circumflex) exclusive OR .tr+~ + (tilde) 1's complement .tr++ ! logical NOT << left shift (as in x<<2) >> right shift (arithmetic on PDP\(hy11; logical on H6070, IBM360) .E2 .NH Assignment Operators .PP An unusual feature of C is that the normal binary operators like `+', `\(mi', etc. can be combined with the assignment operator `=' to form new assignment operators. For example, .E1 x =- 10; .E2 uses the assignment operator `=\(mi' to decrement .UL x by 10, and .E1 x =& 0177 .E2 forms the .UC AND of .UL x and 0177. This convention is a useful notational shortcut, particularly if .UL x is a complicated expression. The classic example is summing an array: .E1 for( sum=i=0; i