Articles of manipulación de bits

En C / C ++, ¿cuál es la forma más sencilla de invertir el orden de los bits en un byte?

Si bien hay varias formas de invertir el orden de los bits en un byte, tengo curiosidad por saber qué es lo “más simple” que puede implementar un desarrollador. Y al revertir quiero decir: 1110 -> 0111 0010 -> 0100 Esto es similar a, pero no es un duplicado de esta pregunta PHP. Esto es […]

¿Por qué es 1 >> 32 == 1?

Me pregunto si quizás esto es un error de JVM. versión java “1.6.0_0” OpenJDK Runtime Environment (IcedTea6 1.4.1) (6b14-1.4.1-0ubuntu13) OpenJDK 64-Bit Server VM (comstackción 14.0-b08, modo mixto) class Tmp { public static void main(String[] args) { System.out.println(“1>>1 = “+(1>>1)); System.out.println(“1>>2 = “+(1>>2)); System.out.println(“1>>31 = “+(1>>31)); System.out.println(“1>>32 = “+(1>>32)); System.out.println(“1>>33 = “+(1>>33)); } } produce esto […]

Agregue dos enteros utilizando solo operadores bit a bit?

En C #, ¿es posible realizar una sum de dos enteros de 32 bits sin usar cosas como if … else, loops, etc.? Es decir, ¿se puede hacer utilizando solo las operaciones en modo bit OR ( | ), Y ( & ), XOR ( ^ ), NO ( ! ), Desplazar hacia la izquierda […]

¿Acelerar las operaciones bits / bits en Python?

Escribí un generador de números primos usando Sieve of Eratosthenes y Python 3.1. El código se ejecuta correctamente y con gracia en 0.32 segundos en ideone.com para generar números primos de hasta 1,000,000. # from bitstring import BitString def prime_numbers(limit=1000000): ”’Prime number generator. Yields the series 2, 3, 5, 7, 11, 13, 17, 19, 23, […]

Cómo agregar dos números sin usar ++ o + u otro operador aritmético

¿Cómo agrego dos números sin usar ++ o + o cualquier otro operador aritmético? Fue una pregunta hecha hace mucho tiempo en alguna entrevista en el campus. De todos modos, hoy alguien hizo una pregunta con respecto a algunas manipulaciones de bits, y en las respuestas se refirió a un hermoso tipo de Stanford bit […]

C / C ++ comprobar si un bit está configurado, es decir, variable int

int temp = 0x5E; // in binary 0b1011110. ¿Hay alguna manera de verificar si el bit 3 en la temperatura es 1 o 0 sin cambio de bits y enmascaramiento? Solo quiero saber si hay alguna función incorporada para esto, o me veo obligado a escribir uno yo mismo.

¿Explica este fragmento que encuentra el máximo de dos enteros sin usar if-else o cualquier otro operador de comparación?

Encuentra el máximo de dos números. No debe usar if-else o cualquier otro operador de comparación. Encontré esta pregunta en el tablón de anuncios en línea, así que pensé que debería preguntar en StackOverflow EJEMPLO Entrada: 5, 10 Salida: 10 Encontré esta solución, ¿alguien puede ayudarme a entender estas líneas de código? int getMax(int a, […]

Bit twiddling: ¿qué bit está configurado?

Tengo un entero sin signo de 64 bits con exactamente 1 bit configurado. Me gustaría asignar un valor a cada uno de los posibles 64 valores (en este caso, los primos impares, por lo que 0x1 corresponde a 3, 0x2 corresponde a 5, …, 0x8000000000000000 corresponde a 313). Parece que la mejor manera sería convertir […]

Manipulación de Bitfield en C

El problema clásico de probar y configurar bits individuales en un entero en C es quizás una de las habilidades de progtwigción de nivel intermedio más comunes. Establece y prueba con máscaras de bits simples como unsigned int mask = 1<<11; if (value & mask) {….} // Test for the bit value |= mask; // […]

Capturar y calcular el desbordamiento durante la multiplicación de dos enteros grandes

Estoy buscando una solución eficiente (opcionalmente estándar, elegante y fácil de implementar) para multiplicar números relativamente grandes y almacenar el resultado en uno o varios enteros: Digamos que tengo dos enteros de 64 bits declarados así: uint64_t a = xxx, b = yyy; Cuando hago a * b , ¿cómo puedo detectar si la operación […]