If N is the given integer, we toggle the last set bit in N by doing N = N - ( N & ( -N ))
Program to toggle the last set bit in an integer.
# Toggle the last set bit in the given integer
def Toggle_Last_Set_Bit (n : int) -> int :
# Example n = 5 ( 1 0 1 )
# -n is 2's complement of n
# -n = 1 0 1 >> 0 1 0 (1's complement)
# + 0 0 1 (+ 1)
# -------
# 0 1 1
# n & ( -n ) = 1 0 1
# & 0 1 1
# -------
# 0 0 1
# n - ( n & ( -n ) ) = 1 0 1 - 0 0 1 = ( 5 - 1 ) = 4 i.e ( 1 0 0 )
return n - (n & (-n))
def main() :
n = int(input("Enter number : "))
print("Number after toggling the last set bit : " + str(Toggle_Last_Set_Bit(n)))
if __name__ == "__main__" :
main()
Output
Enter number : 10
Number after toggling the last set bit : 8
Enter number : 12
Number after toggling the last set bit : 8
Enter number : 256
Number after toggling the last set bit : 0
#include<iostream>
using namespace std;
// Toggle the last set bit in the given integer
void Toggle_Last_Set_Bit (int& n) {
/*
Example n = 4 ( 1 0 0 )
-n is 2's complement of n
-n = 1 0 0 >> 0 1 1 ( 1's complement )
+ 0 0 1 ( Add 1 )
-------
1 0 0
n & ( -n ) = 1 0 0
& 1 0 0
-------
1 0 0
n - ( n & ( -n ) ) = 1 0 0 - 1 0 0 = ( 4 - 4 ) = 0 */
n = n - (n & (-n));
}
int main() {
int n;
cout << "Enter number : ";
cin >> n;
Toggle_Last_Set_Bit (n);
cout << "Number after toggling the last set bit : " << n << endl;
return 0;
}
Output
Enter number : 10
Number after toggling the last set bit : 8
Enter number : 6
Number after toggling the last set bit : 4
Enter number : 4
Number after toggling the last set bit : 0
Enter number : 3
Number after toggling the last set bit : 2
Enter number : 16
Number after toggling the last set bit : 0
import java.util.Scanner;
class Bitwise {
// Toggle the last set bit in the given integer
static int Toggle_Last_Set_Bit (int n) {
/*
Example n = 10 ( 1 0 1 0 )
-n is 2's complement of n
-n = 1 0 1 0 >> 0 1 0 1 (1's complement)
+ 0 0 0 1 ( Add 1 )
-------
0 1 1 0
n & ( -n ) = 1 0 1 0
& 0 1 1 0
-------
0 0 1 0
n - ( n & ( -n ) ) = 1 0 1 0 - 0 0 1 0 = ( 10 - 2 ) = 8 ( 1 0 0 0 ) */
return n - (n & (-n));
}
public static void main (String[] args) {
System.out.print("Enter number : ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println( "Number after toggling the last set bit : " + Toggle_Last_Set_Bit (n));
}
}
Output
Enter number : 10
Number after toggling the last set bit : 8
Enter number : 4
Number after toggling the last set bit : 0
Enter number : 16
Number after toggling the last set bit : 0
Enter number : 7
Number after toggling the last set bit : 6