cython
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()
16True
17
18"""
19
20def f():
21"""
22>>> f()
23(45, 111)
24"""
25cdef int int1, int2, int3
26cdef char char1
27cdef long long1, long2
28int2 = 42
29int3 = 7
30char1 = c'C'
31
32int1 = int2 | int3
33int1 |= int2 ^ int3
34int1 ^= int2 & int3
35int1 ^= int2 << int3
36int1 ^= int2 >> int3
37int1 ^= int2 << int3 | int2 >> int3
38long1 = char1 | int1
39return int1, long1
40
41
42def long_int_shift():
43"""
44>>> long_int_shift()
4580082
4610010
4710010
4810010
4910010
50"""
51value = 80082 # int using more than 2 bytes == long
52print(value)
53shiftedby3 = value >> 3
54dividedby8 = value // 8
55print(shiftedby3)
56print(dividedby8)
57shiftedby3 = 80082 >> 3
58dividedby8 = 80082 // 8
59print(shiftedby3)
60print(dividedby8)
61