Articles of manipulation de bits

Deux éléments dans un tableau dont le xor est maximum

Étant donné un tableau d’entiers, vous devez trouver deux éléments dont le XOR est maximum. Il y a une approche naïve – juste en sélectionnant chaque élément et xoring avec d’autres éléments, puis en comparant les résultats pour trouver la paire. En dehors de cela, existe-t-il un algorithme efficace?

Est-ce que “-1 >> 5;” comportement non spécifié en C?

C11 §6.5.7 Paragraphe 5: Le résultat de E1 >> E2 est E1 positions de bit E2 décalées à droite. Si E1 a un type non signé ou si E1 a un type signé et une valeur non négative, la valeur du résultat est la partie intégrale du quotient de E1 / 2*^E2 . Si E1 […]

Accélérer les opérations bitssortingng / bit en Python?

J’ai écrit un générateur de nombres premiers en utilisant Sieve of Eratosthenes et Python 3.1. Le code s’exécute correctement et élégamment à 0,32 seconde sur ideone.com pour générer des nombres premiers allant jusqu’à 1 000 000. # from bitssortingng import BitSsortingng def prime_numbers(limit=1000000): ”’Prime number generator. Yields the series 2, 3, 5, 7, 11, 13, […]

Comment puis-je effectuer une multiplication sans l’opérateur ‘*’?

J’étais en train de passer en revue quelques éléments de base pendant que j’apprenais C. Je suis tombé sur une question pour multiplier un nombre par 7 sans utiliser l’opérateur *. En gros c’est comme ça (x << 3) – x; Maintenant, je connais les opérations de base de manipulation des bits, mais je ne […]

Capture et calcul du dépassement lors de la multiplication de deux grands nombres entiers

Je recherche une solution efficace (facultative, standard et facile à mettre en œuvre) pour multiplier des nombres relativement importants et stocker le résultat dans un ou plusieurs nombres entiers: Disons que j’ai deux entiers de 64 bits déclarés comme ceci: uint64_t a = xxx, b = yyy; Quand je fais a * b , comment […]

Manipulation de bitfield en C

Le problème classique du test et de la définition de bits individuels dans un entier en C est peut-être l’une des compétences de programmation de niveau intermédiaire les plus courantes. Vous définissez et testez avec des masques simples tels que unsigned int mask = 1<<11; if (value & mask) {….} // Test for the bit […]

Décalage arithmétique sur un entier signé

J’essaie de comprendre comment fonctionnent exactement les opérateurs de décalage arithmétique en C, et comment cela affectera les entiers 32 bits signés. Pour simplifier les choses, disons que nous travaillons dans un octet (8 bits): x = 1101.0101 MSB[ 1101.0101 ]LSB En lisant d’autres articles sur Stack Overflow et certains sites Web, j’ai constaté que: […]

Convertir 0x1234 en 0x11223344

Comment puis-je étendre le nombre hexadécimal 0x1234 à 0x11223344 de manière performante? unsigned int c = 0x1234, b; b = (c & 0xff) << 4 | c & 0xf | (c & 0xff0) << 8 | (c & 0xff00) << 12 | (c & 0xf000) < %p\n”, c, b); Sortie: 0x1234 -> 0x11223344 J’en ai […]

Comment cela marche-t-il? Tours étranges de Hanoi Solution

J’ai été perdu sur Internet quand j’ai découvert cette solution inhabituelle et itérative aux tours de Hanoi: for (int x = 1; x < (1 << nDisks); x++) { FromPole = (x & x-1) % 3; ToPole = ((x | x-1) + 1) % 3; moveDisk(FromPole, ToPole); } Ce message a également le code Delphi […]

Vérifier si un bit est défini ou non

Comment vérifier si un certain bit dans un octet est défini? bool IsBitSet(Byte b,byte nPos) { return …..; }