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; ` `} ` |

## 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) ` |

## 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 ` |

## 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) ` |

**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.