【问题标题】:How many flags can a DWORD hold?一个 DWORD 可以容纳多少个标志?
【发布时间】:2012-12-10 23:43:59
【问题描述】:

使用标志有点新,但在 C++ 中也不是最好的。我只是想知道,一个 DWORD 可以容纳多少个标志?我假设它是 32,因为 32 位?如果没有,它至少可以容纳 16 个标志,因为我需要这个作为最低要求。

我可以找到如何使用标志,那里没问题,但是在网络上找不到任何地方说明不同类型的数据类型可以保存的值,我再次假设它只是它们拥有的位数,但是我找不到足够的信息来澄清这一点。

谢谢。

【问题讨论】:

标签: c++ windows winapi


【解决方案1】:

问题标记为 C++,所以如果你想存储 16 个标志,只需使用 std::bitset。

如果您想确定整数的位大小,请使用 cstdint 和类型 linke uint16_t, uint64_t... 会更清晰。

【讨论】:

  • DWORD 没有歧义。它是 32 位。
  • 不是编译器,但对于像我这样未经培训的开发人员来说会有:)
  • 我完全同意使用std::bitset<> 的建议。比可怕的 C 风格的整数位运算要好得多。
【解决方案2】:

一个 WORD 有 16 位,所以一个 DWORD(双字)有 32 个。

因此,如果您为每个标志使用一个位,则一个 DWORD 可以容纳 32 个标志。

【讨论】:

    【解决方案3】:

    一个 DWORD 有多少位?一个标志和一个位通常是同一个东西。但有时,在使用位域时,我们可以使用多个位,在这种情况下,您当然不能容纳那么多域。

    【讨论】:

      【解决方案4】:

      整数数据类型可以支持与位一样多的标志。根据MSDN documentationDWORD是32位数据类型。

      DWORD 32 位无符号整数。范围是 0 到 4294967295(十进制)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多