【问题标题】:Store 3 bit binary numbers in C++ array在 C++ 数组中存储 3 位二进制数
【发布时间】:2015-06-08 22:02:41
【问题描述】:

我有一个程序需要 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}

等等。

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

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

        }
      }

现在,我必须将 decimaltobinary() 函数的输出(它是一个 3 位二进制数)存储在一个数组中,稍后我将使用它来创建子集。这是我现在卡住的部分。 我们可以将一个多位二进制数存储在一个数组中并直接使用它吗? 请帮助我解决这个问题。 也欢迎任何关于 createsubset() 函数的建议。

【问题讨论】:

标签: c++ binary


【解决方案1】:

C/C++ 中的数字以二进制形式存储,因此无需“转换”它们。您可以使用任何想要存储 3 位数字的 C/C++ 无符号整数类型,例如,将它们存储在 std::vector 中就可以了。

沿着这条线,与其将读取的数字存储到数组 [固定大小的容器] 中,不如考虑将它们存储在向量 [可变大小的容器] 中,因为您“预先”不知道大小

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 2014-05-08
    • 2021-10-06
    • 2021-06-13
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多