# Minimum number using set bits of a given number

Given an unsigned number, find the minimum number that could be formed by using the bits of the given unsigned number.

**Examples :**

Input : 6

Output : 3

Binary representation of 6 is 0000….0110. Smallest number with same number of set bits 0000….0011.

Input : 11

Output : 7

**Simple Approach:**

1. Find binary representation of the number using simple decimal to binary representation technique.

2. Count number of set bits in the binary representation equal to ‘n’.

3. Create a binary representation with it’s ‘n’ least significant bits set to 1.

4. Convert the binary representation back to the number.

**Efficient Approach:**

1. Just measure the number of 1’s present in the bit representation of the number.

2. (Number of set bits raised to the power of 2) – 1 represents the minimized number.

## C++

`// An efficient C++ program to find ` `// minimum number formed by bits of a given number. ` `#include <bits/stdc++.h> ` `#define ll unsigned int ` `using` `namespace` `std; ` ` ` `// Returns minimum number formed by ` `// bits of a given number. ` `ll minimize(ll a) ` `{ ` ` ` `// _popcnt32(a) gives number of 1's ` ` ` `// present in binary representation ` ` ` `// of a. ` ` ` `ll n = _popcnt32(a); ` ` ` ` ` `return` `(` `pow` `(2, n) - 1); ` `} ` ` ` `// Driver function. ` `int` `main() ` `{ ` ` ` `ll a = 11; ` ` ` `cout << minimize(a) << endl; ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// An efficient Java program to ` `// find minimum number formed ` `// by bits of a given number. ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` ` ` `public` `static` `int` `_popcnt32(` `long` `number) ` ` ` `{ ` ` ` `int` `count = ` `0` `; ` ` ` `while` `(number > ` `0` `) ` ` ` `{ ` ` ` `count += number & 1L; ` ` ` `number >>= 1L; ` ` ` `} ` ` ` `return` `count; ` ` ` `} ` ` ` ` ` `// Returns minimum number formed ` ` ` `// by bits of a given number. ` ` ` `static` `long` `minimize(` `long` `a) ` ` ` `{ ` ` ` `// _popcnt32(a) gives number ` ` ` `// of 1's present in binary ` ` ` `// representation of a. ` ` ` `int` `n = _popcnt32(a); ` ` ` ` ` `return` `((` `long` `)Math.pow(` `2` `, n) - ` `1` `); ` ` ` `} ` ` ` ` ` `// Driver Code. ` ` ` `public` `static` `void` `main(String args[]) ` ` ` `{ ` ` ` `long` `a = ` `11` `; ` ` ` `System.out.print(minimize(a)); ` ` ` `} ` `} ` ` ` `// This code is contributed by ` `// Manish Shaw(manishshaw1) ` |

*chevron_right*

*filter_none*

## Python3

`# An efficient Python3 program ` `# to find minimum number formed ` `# by bits of a given number. ` ` ` `# Returns minimum number formed by ` `# bits of a given number. ` `def` `minimize(a): ` ` ` ` ` `# _popcnt32(a) gives number of 1's ` ` ` `# present in binary representation ` ` ` `# of a. ` ` ` `n ` `=` `bin` `(a).count(` `"1"` `) ` ` ` ` ` `return` `(` `pow` `(` `2` `, n) ` `-` `1` `) ` ` ` `# Driver Code ` `a ` `=` `11` `print` `(minimize(a)) ` ` ` `# This code is contributed by Mohit Kumar ` |

*chevron_right*

*filter_none*

## C#

`// An efficient C# program to ` `// find minimum number formed ` `// by bits of a given number. ` `using` `System; ` `using` `System.Linq; ` `using` `System.Collections.Generic; ` ` ` `class` `GFG ` `{ ` ` ` `// Returns minimum number formed ` ` ` `// by bits of a given number. ` ` ` `static` `long` `minimize(` `long` `a) ` ` ` `{ ` ` ` `// _popcnt32(a) gives number ` ` ` `// of 1's present in binary ` ` ` `// representation of a. ` ` ` `string` `binaryString = Convert.ToString(a, 2); ` ` ` `int` `n = binaryString.Split(` `new` `[] {` `'0'` `}, ` ` ` `StringSplitOptions.RemoveEmptyEntries).Length + 1; ` ` ` ` ` `return` `((` `long` `)Math.Pow(2, n) - 1); ` ` ` `} ` ` ` ` ` `// Driver Code. ` ` ` `static` `void` `Main() ` ` ` `{ ` ` ` `long` `a = 11; ` ` ` `Console.Write(minimize(a)); ` ` ` `} ` `} ` ` ` `// This code is contributed by ` `// Manish Shaw(manishshaw1) ` |

*chevron_right*

*filter_none*

**Output :**

7

**Note :** The above code uses GCC specific functions. If we wish to write code for other compilers, we may use Count set bits in an integer.

## Recommended Posts:

- Minimum flips required to maximize a number with k set bits
- Find a number X such that (X XOR A) is minimum and the count of set bits in X and B are equal
- Check if bits of a number has count of consecutive set bits in increasing order
- Find the largest number smaller than integer N with maximum number of set bits
- Maximize a given unsigned number number by swapping bits at it's extreme positions.
- Maximum number of contiguous array elements with same number of set bits
- Check if a number has same number of set and unset bits
- Toggle bits of a number except first and last bits
- Number of integers with odd number of set bits
- Next higher number with same number of set bits
- M-th smallest number having k number of set bits.
- Find a number which give minimum sum when XOR with every number of array of integers
- Minimum number of given powers of 2 required to represent a number
- Same Number Of Set Bits As N
- Set all odd bits of a number
- Set all even bits of a number
- Check whether the number has only first and last bits set | Set 2
- Toggle all the bits of a number except k-th bit.
- Check if all bits of a number are set
- Number with set bits only between L-th and R-th index

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.