在c++数组中存储3位二进制数

Store 3 bit binary numbers in C++ array

本文关键字:3位 二进制数 存储 c++ 数组      更新时间:2023-10-16

我有一个程序,它接受2个输入,N和myarray[]。

    cin >> N; 
    cin >> myarray[];

在这个例子中,假设N=3,这意味着必须分配一个大小为3的整数数组,并假设myarray[]的条目为{1,2,3}。

现在我有一个函数createsubset(),它创建条目{1,2,3}的所有可能子集。我遵循的逻辑是:

包含n个元素的集合的子集的总数为m=2^n,因为一个元素可以在子集中存在或不存在。

所以,当m=7时,对应的二进制符号为111。现在从m=0迭代到m=7来生成所有的子集(除了集合本身是m=8的结果):例子:

     m=0, binary=000, subset={ }
     m=1, binary=001, subset={c}
     m=2, binary=010, subset={b}
     m=3, binary=011, subset={b,c}

等等

这是由函数generate()完成的,该函数从m=0迭代到m=8。

      void generate()
      {
        for(m=0; m<8; m++)
        {
           decimaltobinary(m);
        }
      }

现在,我必须将decimaltobinary()函数的输出(这是一个3位二进制数)存储在一个数组中,稍后我将使用该数组创建子集。这就是我现在被困住的地方。我们可以在数组中存储多位二进制数并直接使用它吗?请帮我解决这个问题。欢迎对createsubset()函数提出任何建议。

C/c++中的数字以二进制形式存储,因此不需要"转换"它们。你可以使用任何C/c++的无符号整型来存储一个3位的数字,例如,将它们存储在std::vector