Identifier les nombres impairs, pairs - binaires vs mod

Récemment, j'ai eu à déterminer si un nombre est pair ou impair pour un grand nombre d'entiers. J'ai pensé à une idée pour identifier un numéro pair ou impair par ET-ing contre 1 et en comparant le résultat à 1

x & 1 == 1 //even or odd 

Je n'ai jamais vu cette mise en œuvre dans la pratique. La façon la plus commune vous voyez toujours est :

x % 2 == 0

J'ai décidé de procéder à une vérification de rendement sur les deux méthodes et la méthode binaire semble légèrement plus rapide sur ma machine.

int size = 60000000;
List<int> numberList = new List<int>();
Random rnd = new Random();

for (int index = 0; index < size; index++)
{
    numberList.Add(rnd.Next(size));
}

DateTime start;
bool even;

//regular mod
start = DateTime.Now;
for (int index = 0; index < size; index++)
{
    even = (numberList[index] % 2 == 0);
}
Console.WriteLine("Regualr mod : {0}", DateTime.Now.Subtract(start).Ticks);

//binary 
start = DateTime.Now;
for (int index = 0; index < size; index++)
{
    even = ((numberList[index] & 1) != 1);
}
Console.WriteLine("Binary operation: {0}", DateTime.Now.Subtract(start).Ticks);

Console.ReadKey();

Quelqu'un a vu la méthode binaire mis en œuvre ? - Il des inconvénients ?

source d'informationauteur Ender