当前位置: 首页 > 知识库问答 >
问题:

如何生成所有二进制字符串的顺序(递增)到2^63而不转换数字?

郎灿
2023-03-14

输出应该像0 1 10 11 100 101 110 111 100 100 1 101 1 101 1 110 1 110 1 111 1 111 1 100 00...等

在这里,这应该是不需要从数字转换而生成的。例如,我们不应该通过将7转换为二进制来生成111。

共有1个答案

邵凯定
2023-03-14

因为您需要的唯一特性是增量,所以您可以很容易地编写一个类:

 class BinaryNumber {
 public:
      uint8_t data[64];  // This is wasted space, see notes.
      bool increment();
 };
 std::ostream & operator<<(std::ostream &, const BinaryNumber &);

也许bitset是一种更好的数据结构,而不是在只关心1个位的情况下用8位值浪费所有空间,但我希望保持简单。

增加一个值也不错。

// Returns false once we hit max value
bool BinaryNumber::increment() {
    bool retVal = false;
    for (int index = 0; index < 64; ++index) {
        if (data[index] == 0) {
            data[index] = 1;
            retVal = true;
            break;
        }
        else {
            data[index] = 0;
        }
    }
    return retVal;
}

考虑增加值0。看看代码。如果第一位是0,我们将它转换为1,并中断循环(返回true,因为我们中断得早)。

如果它是1,我们将它翻转回零并递归,在索引[1]处递增。循环直到我们找到一个零,这样我们就不需要再进1了。

我将把write方法留给您。

这不是最有效的方法,但它很干净,也很容易理解。

 类似资料:
  • 例如,我有一个这样的字符串(返回值的): 无论我对它做了什么,它总是在字符串前打印恼人的: 有人对如何将其用作普通字符串或将其转换为普通字符串有什么想法吗?

  • 问题内容: 我想将二进制字符串转换为数字Eg 这怎么可能?谢谢 问题答案: 该函数将字符串转换为数字,并使用第二个参数来指定字符串表示形式的基数: 看到它在行动 。

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 我正在制作一个模拟制表方法(Quine McCluskey)的程序,并试图将字符串格式的输入转换为整数格式,最后再转换为字符串(二进制格式)格式。 编辑:我忘了包括这个方法…

  • 问题内容: 我想将十六进制字符串转换为二进制字符串。例如,十六进制2是0010。下面是代码: 但是,这仅适用于十六进制0-9;它不适用于十六进制A-F,因为它使用。谁能增强它? 问题答案: 您需要告诉Java int是十六进制的,如下所示:

  • 问题内容: 我正在寻找一种有效的方法,如何轻松地将a转换为二进制字符串。我们说它的通常长度将是数千位。 例如,让我们有这个: 这是预期的结果: 我总体上有一些想法(信息流等),但是可能我缺少一些明显的标准方法。 问题答案: 因此,这是到目前为止我尝试过的最有效的方法: 或使用其他流的其他方式: