1# mode: run
2
3__doc__ = u"""
4    >>> int2 = 42
5    >>> int3 = 7
6    >>> char1 = ord('C')
7
8    >>> int1 = int2 | int3
9    >>> int1 |= int2 ^ int3
10    >>> int1 ^= int2 & int3
11    >>> int1 ^= int2 << int3
12    >>> int1 ^= int2 >> int3
13    >>> int1 ^= int2 << int3 | int2 >> int3
14    >>> long1 = char1 | int1
15    >>> (int1, long1) == f()
16    True
17
18"""
19
20def f():
21    """
22    >>> f()
23    (45, 111)
24    """
25    cdef int int1, int2, int3
26    cdef char char1
27    cdef long long1, long2
28    int2 = 42
29    int3 = 7
30    char1 = c'C'
31
32    int1 = int2 | int3
33    int1 |= int2 ^ int3
34    int1 ^= int2 & int3
35    int1 ^= int2 << int3
36    int1 ^= int2 >> int3
37    int1 ^= int2 << int3 | int2 >> int3
38    long1 = char1 | int1
39    return int1, long1
40
41
42def long_int_shift():
43    """
44    >>> long_int_shift()
45    80082
46    10010
47    10010
48    10010
49    10010
50    """
51    value = 80082 # int using more than 2 bytes == long
52    print(value)
53    shiftedby3 = value >> 3
54    dividedby8 = value // 8
55    print(shiftedby3)
56    print(dividedby8)
57    shiftedby3 = 80082 >> 3
58    dividedby8 = 80082 // 8
59    print(shiftedby3)
60    print(dividedby8)
61