\lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{}
\lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{}
\lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{}
- \lineiii{\var{x} << \var{n}}{\var{x} shifted left by \var{n} bits}{(1), (2)}
- \lineiii{\var{x} >> \var{n}}{\var{x} shifted right by \var{n} bits}{(1), (3)}
+ % The empty groups below prevent conversion to guillemets.
+ \lineiii{\var{x} <{}< \var{n}}{\var{x} shifted left by \var{n} bits}{(1), (2)}
+ \lineiii{\var{x} >{}> \var{n}}{\var{x} shifted right by \var{n} bits}{(1), (3)}
\hline
\lineiii{\~\var{x}}{the bits of \var{x} inverted}{}
\end{tableiii}
operations:
\begin{productionlist}
+ % The empty groups below prevent conversion to guillemets.
\production{shift_expr}
{\token{a_expr}
- | \token{shift_expr} ( "<<" | ">>" ) \token{a_expr}}
+ | \token{shift_expr} ( "<{}<" | ">{}>" ) \token{a_expr}}
\end{productionlist}
These operators accept plain or long integers as arguments. The
{\token{target} \token{augop} \token{expression_list}}
\production{augop}
{"+=" | "-=" | "*=" | "/=" | "\%=" | "**="}
- \productioncont{| ">>=" | "<<=" | "\&=" | "\textasciicircum=" | "|="}
+ % The empty groups below prevent conversion to guillemets.
+ \productioncont{| ">{}>=" | "<{}<=" | "\&=" | "\textasciicircum=" | "|="}
\end{productionlist}
(See section~\ref{primaries} for the syntax definitions for the last
statement \code{a += 2} increments the value of the variable
\code{a} by 2, equivalent to the slightly lengthier \code{a = a + 2}.
+% The empty groups below prevent conversion to guillemets.
The full list of supported assignment operators is \code{+=},
\code{-=}, \code{*=}, \code{/=}, \code{\%=}, \code{**=}, \code{\&=},
-\code{|=}, \verb|^=|, \code{>>=}, and \code{<<=}. Python classes can
+\code{|=}, \verb|^=|, \code{>{}>=}, and \code{<{}<=}. Python classes can
override the augmented assignment operators by defining methods named
\method{__iadd__}, \method{__isub__}, etc. For example, the following
\class{Number} class stores a number and supports using += to create a
they're stored as 32-bit numbers and result in a negative value, but
in Python 2.4 they'll become positive long integers.
+% The empty groups below prevent conversion to guillemets.
There are a few ways to fix this warning. If you really need a
positive number, just add an \samp{L} to the end of the literal. If
you're trying to get a 32-bit integer with low bits set and have
-previously used an expression such as \code{~(1 << 31)}, it's probably
+previously used an expression such as \code{\textasciitilde(1 <{}< 31)},
+it's probably
clearest to start with all bits set and clear the desired upper bits.
For example, to clear just the top bit (bit 31), you could write
-\code{0xffffffffL {\&}{\textasciitilde}(1L<<31)}.
+\code{0xffffffffL {\&}{\textasciitilde}(1L<{}<31)}.
\item You can no longer disable assertions by assigning to \code{__debug__}.