Related Articles

# Minimum number using set bits of a given number

• Last Updated : 25 May, 2021

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

 ``

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. My Personal Notes arrow_drop_up