# http://c...content-available-to-author-only...e.com/q/74535/34718
# http://c...content-available-to-author-only...e.com/a/74550/34718
def f(a,b,c=1,d=0):
z=2**c-1<<b;return[a^z,a|z,a&~z][cmp(d,0)]
g=lambda a,b,c=1:a>>b&2**c-1
print f(0, 2) #=> 4 (0 => 100)
print f(4, 2) #=> 0 (100 => 0)
print f(0, 2, 4) #=> 60 (0 => 111100)
print f(170, 2, 4, 0) #=> 150 (10101010 => 10010110)
print f(170, 2, 4, 1) #=> 190 (10101010 => 10111110)
print f(170, 2, 4, -1) #=> 130 (10101010 => 10000010)
print
print
print g(0, 2) #=> 0 (0 => 0)
print g(4, 2) #=> 1 (100 => 1)
print g(60, 2, 4) #=> 15 (111100 => 1111)
print g(170, 2, 4) #=> 10 (10101010 => 1010)
IyBodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vcS83NDUzNS8zNDcxOAojIGh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbS9hLzc0NTUwLzM0NzE4CgpkZWYgZihhLGIsYz0xLGQ9MCk6Cgl6PTIqKmMtMTw8YjtyZXR1cm5bYV56LGF8eixhJn56XVtjbXAoZCwwKV0KZz1sYW1iZGEgYSxiLGM9MTphPj5iJjIqKmMtMQoJCgpwcmludCBmKDAsIDIpICM9PiA0ICgwID0+IDEwMCkKcHJpbnQgZig0LCAyKSAjPT4gMCAoMTAwID0+IDApCnByaW50IGYoMCwgMiwgNCkgIz0+IDYwICgwID0+IDExMTEwMCkKcHJpbnQgZigxNzAsIDIsIDQsIDApICM9PiAxNTAgKDEwMTAxMDEwID0+IDEwMDEwMTEwKQpwcmludCBmKDE3MCwgMiwgNCwgMSkgIz0+IDE5MCAoMTAxMDEwMTAgPT4gMTAxMTExMTApCnByaW50IGYoMTcwLCAyLCA0LCAtMSkgIz0+IDEzMCAoMTAxMDEwMTAgPT4gMTAwMDAwMTApCgpwcmludApwcmludCAKCnByaW50IGcoMCwgMikgIz0+IDAgKDAgPT4gMCkKcHJpbnQgZyg0LCAyKSAjPT4gMSAoMTAwID0+IDEpCnByaW50IGcoNjAsIDIsIDQpICM9PiAxNSAoMTExMTAwID0+IDExMTEpCnByaW50IGcoMTcwLCAyLCA0KSAjPT4gMTAgKDEwMTAxMDEwID0+IDEwMTApCg==