Articles of manipulation de bits

En C / C ++, quel est le moyen le plus simple d’inverser l’ordre des bits dans un octet?

Bien qu’il existe plusieurs manières d’inverser l’ordre des bits dans un octet, je suis curieux de savoir quel est le “plus simple” pour un développeur à implémenter. Et en renversant je veux dire: 1110 -> 0111 0010 -> 0100 Ceci est similaire à, mais pas une duplication de cette question PHP. Ceci est similaire à, […]

Pourquoi si (n & -n) == n alors n est une puissance de 2?

La ligne 294 de la source java.util.Random indique if ((n & -n) == n) // ie, n is a power of 2 // rest of the code Pourquoi est-ce?

C / C ++ vérifie si un bit est défini, c’est-à-dire la variable int

int temp = 0x5E; // in binary 0b1011110. Existe-t-il un moyen de vérifier si le bit 3 en température est 1 ou 0 sans décalage ni masquage des bits. Je veux juste savoir s’il y a une fonction intégrée pour cela ou si je suis obligé d’en écrire une moi-même.

Position du bit le moins significatif défini

Je cherche un moyen efficace pour déterminer la position du bit le moins significatif qui est défini dans un entier, par exemple pour 0x0FF0 ce serait 4. Une implémentation sortingviale est la suivante: unsigned GetLowestBitPos(unsigned value) { assert(value != 0); // handled separately unsigned pos = 0; while (!(value & 1)) { value >>= 1; […]

Devrais-je utiliser #define, enum ou const?

Dans un projet C ++ sur lequel je travaille, j’ai un type de valeur de drapeau qui peut avoir quatre valeurs. Ces quatre drapeaux peuvent être combinés. Les drapeaux décrivent les enregistrements dans la firebase database et peuvent être: nouvel enregistrement enregistrement supprimé enregistrement modifié enregistrement existant Maintenant, pour chaque enregistrement, je souhaite conserver cet […]

Pourquoi XOR est-il le moyen par défaut de combiner les hachages?

Disons que vous avez deux hachages H(A) et H(B) et que vous voulez les combiner. J’ai lu qu’une bonne façon de combiner deux hachages est de les XOR , par exemple XOR( H(A), H(B) ) . La meilleure explication que j’ai trouvée est brièvement abordée ici sur ces directives de fonction de hachage : XORing […]

Comment puis-je supprimer un drapeau en C?

Il y a une variable qui contient des drapeaux et je veux en supprimer un. Mais je ne sais pas comment l’enlever. Voici comment je règle le drapeau. my.emask |= ENABLE_SHOOT;

C # int à byte

Je dois convertir un int en un byte[] une façon de le faire est d’utiliser BitConverter.GetBytes() . Mais je ne sais pas si cela correspond à la spécification suivante: Un entier signé XDR est un datum de 32 bits qui code un entier dans la plage [-2147483648,2147483647]. L’entier est représenté en notation complément à deux. […]

Arrondir à la prochaine puissance de 2

Je veux écrire une fonction qui renvoie la prochaine puissance de 2 chiffres la plus proche. Par exemple, si mon entrée est 789, le résultat devrait être 1024. Existe-t-il un moyen d’y parvenir sans utiliser de boucles, mais en utilisant simplement des opérateurs au niveau du bit?

Opérations bit à bit les plus courantes sur les énumérations

Pour la vie de moi, je ne me souviens pas comment définir, supprimer, basculer ou tester un peu dans un champ de bits. Soit je ne sais pas ou je les mélange parce que j’en ai rarement besoin. Donc, un “bit-cheat-sheet” serait bien d’avoir. Par exemple: flags = flags | FlagsEnum.Bit4; // Set bit 4. […]