如何生成所有包含5位的二进制数0-128?

时间:2016-09-29 15:46:14

标签: binary

我正在使用c ++,但实际上只需要知道如何做到这一点我应该能够提出自己的代码。 我知道有112种可能的组合,但我试图找到一种方法来生成它们所有可能的数组,而不必手动完成。 它不必是一个数组,如果需要我可以轻松地使它成为一个数组,只需要生成0到128之间的所有二进制数,其中包含5位数。

bool/int bit[8];

无论在哪里工作

bit[7]+bit[6]+bit[5]+bit[4]+bit[3]+bit[2]+bit[1]+bit[0]=5;
bool/int bits[8][112];

试图弄清楚如何在循环中执行此操作 我一直在谷歌搜索,没有发现任何接近我想做的事情,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我想通了

#include <iostream>

using namespace std;

int binArray[8]={0,0,0,0,0,0,0,0};

int main(){
    for(int i=0;i<112;i++){
        do{
            binArray[7]++;
            for(int b=7;b>-1;b--){
                if(binArray[b]==2){
                    binArray[b]=0;
                    binArray[b-1]++;
                }
            }
        }
        while(binArray[7]+binArray[6]+binArray[5]+binArray[4]+binArray[3]+binArray[2]+binArray[1]+binArray[0]!=5);
        for(int j=0;j<8;j++){
            cout << binArray[j] << " ";
        }
        cout << endl;
    }

    return 0;
}