Given an integer . The task is to find the number of bits changed after adding 1 to the given number.
Examples:
Input : N = 5 Output : 2 After adding 1 to 5 it becomes 6. Binary representation of 5 is 101. Binary representation of 6 is 110. So, no. of bits changed is 2. Input : N = 1 Output : 2
There are three approaches to find the number of changed bits in the result obtained after adding 1 to the given value N:
- Approach 1: Add 1 to given integer and compare the bits of N and the result obtained after addition and count the number of unmatched bit.
- Approach 2: In case if 1 is added to N, then the total number of bits changed is defined by the position of 1st Zero from right i.e. LSB as zero. In this case, 1 is added to 1 then it got changed and passes a carry 1 to its next bit but if 1 is added to 0 only 0 changes to 1 and no further carry is passed.
- Approach 3: For finding a number of changed bits when 1 is added to a given number take XOR of n and n+1 and calculate the number of set bits in the resultant XOR value.
Below is the implementation of the Approach 3:
C++
// CPP program to find the number// of changed bit#include <bits/stdc++.h>using namespace std;// Function to find number of changed bitint findChangedBit(int n){ // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = __builtin_popcount(XOR); // Return the result return result;}// Driver functionint main(){ int n = 6; cout << findChangedBit(n) << endl; n = 7; cout << findChangedBit(n); return 0;} |
Java
// Java program to find the number// of changed bitclass GFG {// Function to find number of changed bitstatic int findChangedBit(int n){ // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = Integer.bitCount(XOR); // Return the result return result;}// Driver codepublic static void main(String[] args) { int n = 6; System.out.println(findChangedBit(n)); n = 7; System.out.println(findChangedBit(n));}}// This code contributed by Rajput-Ji |
Python3
# Python 3 program to find the number# of changed bit# Function to find number of changed bitdef findChangedBit(n): # Calculate xor of n and n+1 XOR = n ^ (n + 1) # Count set bits in xor value result = bin(XOR).count("1") # Return the result return result# Driver Codeif __name__ == '__main__': n = 6 print(findChangedBit(n)) n = 7 print(findChangedBit(n))# This code is contributed by# Surendra_Gangwar |
C#
// C# program to find the number// of changed bitusing System; class GFG {// Function to find number of changed bitstatic int findChangedBit(int n){ // Calculate xor of n and n+1 int XOR = n ^ (n + 1); // Count set bits in xor value int result = bitCount(XOR); // Return the result return result;}static int bitCount(int x){ // To store the count // of set bits int setBits = 0; while (x != 0) { x = x & (x - 1); setBits++; } return setBits;}// Driver codepublic static void Main(String[] args) { int n = 6; Console.WriteLine(findChangedBit(n)); n = 7; Console.WriteLine(findChangedBit(n));}}/* This code contributed by PrinciRaj1992 */ |
Javascript
<script>// Javascript program to find the number// of changed bit// Function to find number of changed bitfunction findChangedBit(n){ // Calculate xor of n and n+1 let XOR = n ^ (n + 1); // Count set bits in xor value let result = bitCount(XOR); // Return the result return result;}function bitCount(x){ // To store the count // of set bits let setBits = 0; while (x != 0) { x = x & (x - 1); setBits++; } return setBits;}// Driver function let n = 6; document.write(findChangedBit(n) + "<br>"); n = 7; document.write(findChangedBit(n));</script> |
1 4
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Information on that Topic: geeksforgeeks.org/count-number-of-bits-changed-after-adding-1-to-given-n/ […]