1print(0 & (1 << 80))
2print(0 & (1 << 80) == 0)
3print(bool(0 & (1 << 80)))
4
5a = 0xfffffffffffffffffffffffffffff
6print(a & (1 << 80))
7print((a & (1 << 80)) >> 80)
8print((a & (1 << 80)) >> 80 == 1)
9
10# test negative on rhs
11a = 123456789012345678901234567890
12print(a & -1)
13print(a & -2)
14print(a & -2345678901234567890123456789)
15print(a & (-a))
16print(a & (-a - 1))
17print(a & (-a + 1))
18
19# test negative on lhs
20a = 123456789012345678901234567890
21print(-1 & a)
22print(-2 & a)
23print(-2345678901234567890123456789 & a)
24print((-a) & a)
25print((-a) & 0xffffffff)
26print((-a) & 0xffffffffffffffffffffffffffffffff)
27print((-a) & 2)
28print((-(1 << 70)) & 2)
29
30# test negative on lhs and rhs
31mpz = 1 << 70
32a = 123456789012345678901234567890
33print(-1 & (-a))
34print(-2 & (-a))
35print(-2345678901234567890123456789 & (-a))
36print((-a) & (-a))
37print((-a) & (-0xffffffff))
38print((-a) & (-0xffffffffffffffffffffffffffffffff))
39print((-1) & (-0xffffffffffffffffffffffffffffffff))
40print((-a) & (-2))
41print((-mpz) & (-2))
42