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

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

## Javascript

`<script>` `// An efficient Javascript program to` `// find minimum number formed` `// by bits of a given number.` ` ` ` ` `function` `_popcnt32(number)` ` ` `{` ` ` `let count = 0;` ` ` `while` `(number > 0)` ` ` `{` ` ` `count += number & 1;` ` ` `number >>= 1;` ` ` `}` ` ` `return` `count;` ` ` `}` ` ` ` ` `// Returns minimum number formed` ` ` `// by bits of a given number.` ` ` `function` `minimize(a)` ` ` `{` ` ` ` ` `// _popcnt32(a) gives number` ` ` `// of 1's present in binary` ` ` `// representation of a.` ` ` `let n = _popcnt32(a);` ` ` ` ` `return` `(Math.pow(2, n) - 1);` ` ` `}` ` ` ` ` `// Driver Code.` ` ` `let a = 11;` ` ` `document.write(minimize(a));` ` ` `// This code is contributed by unknown2108` `</script>` |

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