Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void Fonction()
        {
            BitUnion union = new BitUnion();
            int index = 0;
            int num2 = 0;
            for (int i = 0; i < 100; i++) //boucle de 0 a 99
            {
                index = this.nMap[i] / 0x20; //met dans index le quotien
                num2 = this.nMap[i] % 0x20; // met dans num2 le modulo
                if ((this.m_bitunion.m_bits[index] & ((uint)(((long)1L) << num2))) != 0)
                {
                    index = i / 0x20;
                    num2 = i % 0x20;
                    union.m_bits[index] |= (uint)(((long)1L) << num2);
                }
                else
                {
                    index = i / 0x20;
                    num2 = i % 0x20;
                    union.m_bits[index] &= ~((uint)(((long)1L) << num2));
                }
            }
            this.m_bitunion = union;
        }
-----------------
Sachant que nMap est un tableau de 100 entiers mélangés
que la classe BitUnion contient une variable m_bit.[] de type entier et de taille 4
exemple:
m_bits.[0] = 0x00000022
m_bits.[1] = 0x00000042
m_bits.[2] = 0x00000542
m_bits.[3] = 0x00006544

Est ce qu'il fait un ou logique et un décalage à gauche ou l'inverse ?
une inversion de bit avant le ET logique ?