Quelque chose ne va pas avec BitArrays en C #?
Question
Quand j'empile ce code:
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);
}
Je reçois le résultat suivant:
Vrai Vrai Vrai
Quand je fais un xor sur deux valeurs booléennes en disant vrai ^ vrai je deviens faux.
Le code contient-il un problème? Mon souvenir de la table de vérité pour XOR était que True XOR True est faux.
La solution
Erreur de copier / coller.
BitArray moreBits = new BitArray(3);
bits[0] = true;
bits[1] = true;
bits[2] = true;
Cela devrait être:
BitArray moreBits = new BitArray(3);
moreBits[0] = true;
moreBits[1] = true;
moreBits[2] = true;
Autres conseils
Vous définissez deux fois bits
sur true
. Vous ne définissez pas moreBits
sur true
, la valeur par défaut est all- false
. Je blâme copier / coller!
EDIT: dans le peu de temps qu’il m’a fallu pour écrire ceci, Kent a répondu et a été voté 8 fois!
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow