【问题标题】:Is there something wrong with BitArrays in C#?C# 中的 BitArrays 有什么问题吗?
【发布时间】:2010-10-12 22:01:20
【问题描述】:

当我编译这段代码时:

BitArray bits = new BitArray(3);
bits[0] = true;
bits[1] = true; 
bits[2] = true;

BitArray moreBits = new BitArray(3);
bits[0] = true;
bits[1] = true;
bits[2] = true;

BitArray xorBits = bits.Xor(moreBits);

foreach (bool bit in xorBits)
{
Console.WriteLine(bit);
}

我得到以下输出:

真真真假

当我通过说 true ^ true 对两个布尔值进行异或运算时,我得到了 false。

代码有问题吗。我对 XOR 真值表的记忆是 True XOR True 是 false。

【问题讨论】:

  • C# 或 Java 之类的框架几乎从不出错,因为有很多其他人在使用它们并对其进行测试。始终首先检查您自己的代码。在这种情况下,肯特的回答涵盖了它。
  • 是的,一旦我注意到这一点,我就尝试删除该问题,但由于他的答案已被投票,我无法删除它。其他人关闭它。
  • 为什么要投票?
  • 你可以关闭你自己的问题
  • 不,你可以投票关闭它,但不能关闭它……我需要多 3 票。并且它再次被投票......我绝望......人们真的会阅读问题吗?至少肯特发现我的白痴得到了一个很好的答案徽章......

标签: c# xor bitarray


【解决方案1】:

复制粘贴错误。

BitArray moreBits = new BitArray(3);
bits[0] = true;
bits[1] = true;
bits[2] = true;

应该是:

BitArray moreBits = new BitArray(3);
moreBits[0] = true;
moreBits[1] = true;
moreBits[2] = true;

【讨论】:

  • 去过那里,做到了。这不是你在职业生涯早期犯过一次的错误,并且永远不会重复 - 复制/粘贴小精灵永远潜伏在你的显示器后面,只是等待一时注意力不集中。 ;)
【解决方案2】:

您将bits 设置为true 两次。您没有将moreBits 设置为true,因此默认为all-false。我责怪复制/粘贴!

编辑:在很短的时间内我写了这个肯特回答并获得了 8 次投票!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多