É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?
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 […]
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, […]
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 […]
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 […]
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 […]
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: […]
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 […]
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 […]
Comment vérifier si un certain bit dans un octet est défini? bool IsBitSet(Byte b,byte nPos) { return …..; }