#include <bits/stdc++.h>
using namespace std;
int getIthBit(int n,int i){
int mask=(1<<i);
return (n & mask) > 0 ? 1 : 0 ;
}
void setIthBit(int &n,int i){
int mask=(1<<i);
n=n|mask;
}
void clearIthBit(int &n,int i){
int mask=~(1<<i);
n=n & mask;
}
void updateIthBit(int &n,int i,int v){
int mask=(1<<i),m1=~(1<<i);
(v==0) ? n=n&m1 : n=n|mask ;
}
int clearIBits(int n,int i){
int mask=(-1<<i);
n=n&mask;
return n;
}
int main() {
int n=15,i=2;
// cout<<getIthBit(n,i)<<endl;
// setIthBit(n,i);
// clearIthBit(n,i);
// updateIthBit(n,i,0);
cout<<clearIBits(n,i)<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBnZXRJdGhCaXQoaW50IG4saW50IGkpewoJaW50IG1hc2s9KDE8PGkpOwoJcmV0dXJuIChuICYgbWFzaykgPiAwID8gMSA6IDAgOwp9CnZvaWQgc2V0SXRoQml0KGludCAmbixpbnQgaSl7CglpbnQgbWFzaz0oMTw8aSk7CgluPW58bWFzazsKfQp2b2lkIGNsZWFySXRoQml0KGludCAmbixpbnQgaSl7CglpbnQgbWFzaz1+KDE8PGkpOwoJbj1uICYgbWFzazsKfQp2b2lkIHVwZGF0ZUl0aEJpdChpbnQgJm4saW50IGksaW50IHYpewoJaW50IG1hc2s9KDE8PGkpLG0xPX4oMTw8aSk7Cgkodj09MCkgPyBuPW4mbTEgOiBuPW58bWFzayA7Cn0KaW50IGNsZWFySUJpdHMoaW50IG4saW50IGkpewoJaW50IG1hc2s9KC0xPDxpKTsKCW49biZtYXNrOwoJcmV0dXJuIG47Cn0KaW50IG1haW4oKSB7CglpbnQgbj0xNSxpPTI7CgkvLyBjb3V0PDxnZXRJdGhCaXQobixpKTw8ZW5kbDsKCS8vIHNldEl0aEJpdChuLGkpOwoJLy8gY2xlYXJJdGhCaXQobixpKTsKCS8vIHVwZGF0ZUl0aEJpdChuLGksMCk7Cgljb3V0PDxjbGVhcklCaXRzKG4saSk8PGVuZGw7CglyZXR1cm4gMDsKfQ==