Por favor dígame cómo imprimo un bit, como printf("%d",bit);
.¿Cómo imprimo un bit?
Respuesta
Si el bit es sólo un int que contiene el valor que desee en el bit menos significativo, entonces:
printf("%d", bit & 0x1);
debe hacerlo. El & está haciendo un Binario-Y con un número con solo el primer bit significativo establecido, por lo que está eliminando el resto de los bits en el entero.
Tenga en cuenta que la extracción de un bit desde un número de múltiples bytes te hace toparse con problemas de endianess. – gnud
@gnud: Eso solo se aplica cuando se realiza en memoria, usando punteros. Bit & 0x1 siempre funcionará, independientemente de la forma en que el valor se almacena en la memoria. – unwind
Para imprimir el bit de orden m (m 1..16 o 32) de n:
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
extraer la broca - 1
si su contador de bits comienza en 0.
Eso no funcionará del todo. Estás enmascarando el bit que quieres, pero estás dejando ese bit en su lugar, por lo que no obtendrás 1 o 0. Para obtener siempre 1 o 0 para ese bit necesitarías cambiar la variable a la derecha, no cambiar la máscara izquierda. – Herms
Correcto, lo perdí, gracias. – Keltia
¿Qué tiene de malo tu función? Y "n" no se usa. ¿Quiso decir printf ("% d", n & (1 << (m - 1))? – Koshmaar
Si necesita generalizar más de Herms, usted puede hacer esto:
#define IsBitSet(val, bit) ((val) & (1 << (bit)))
/* ... your code ... */
printf ("%c", IsBitSet(bit, 0) ? '1' : '0');
El printf es equivalente a la respuesta Herms como es.
Si estás hablando de campo de bits en C, usted puede hacer esto: pregunta
struct foo { int b:1; } myFoo;
printf("%c", myFoo.b ? '1' : '0');
Falta un paréntesis de cierre al final de la definición de la macro, no? – bortzmeyer
buena captura - se corrigió – plinth
Esto parece una rotonda pequeña - ¿por qué no '((val) >> (bit)) & 0x1' para que pueda imprimirlo como un número entero en vez del ternario? –
relacionadas: How do you set, clear, and toggle a single bit? es una extensa discusión de acceso de un solo bit en C y C++.
respuesta El C++ es más fácil que el C89 uno, con el tipo bool orígenes:
bool b = true;
std::cout << b;
C99 es bastante similar:
_Bool b = 1;
printf("%d", b);
Bools generalmente no son de un tamaño. –
puede utilizar "unión":
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
¿Imprimiría eso el más significativo? poco, bit menos significativo, o algo más? No puede saber, porque no es portátil. – interjay
- 1. ¿Cómo imprimo un rastro de pila Groovy?
- 2. ¿Cómo imprimo un símbolo Celsius con matplotlib?
- 3. ¿Cómo imprimo un documento HTML desde un servicio web?
- 4. ¿Cómo imprimo un campo desde un archivo separado por tubería?
- 5. ¿Cómo imprimo solo mensajes de registro para un registrador dado?
- 6. ¿Cómo imprimo un carácter de tabulación en Pascal?
- 7. ¿Cómo imprimo los elementos de un vector C++ en GDB?
- 8. ¿Cómo imprimo el carácter '%' con 'printf'?
- 9. ¿Cómo imprimo la url completa con tweepy?
- 10. Rieles: ¿Cómo imprimo los parámetros de solicitud?
- 11. Cómo imprimo funciones como se llaman
- 12. ¿Cómo imprimo una matriz Java en gdb?
- 13. ¿cómo imprimo una lista en haskell?
- 14. Cómo imprimo caracteres UTF-8 C++?
- 15. ¿Cómo imprimo desde Emacs en Win32?
- 16. ¿Cómo imprimo una matriz multidimensional en ruby?
- 17. Reemplazar bit menos significativo con operaciones bit a bit
- 18. ¿Cuándo debería usar un operador bit a bit?
- 19. Comparación bit a bit Java de un byte
- 20. PHP matriz bit a bit
- 21. Indicadores de bit a bit en Delphi
- 22. ¿Cómo realizar consultas de DB bit a bit en Django?
- 23. ¿Cómo funciona el operador bit a bit XOR ('^')?
- 24. ¿Cómo se utilizan las marcas bit a bit en C++?
- 25. Operador bit a bit en SQLAlchemy
- 26. OR bit a bit de las constantes
- 27. Operaciones bit a bit con enteros grandes
- 28. Lua - Operaciones lógicas de bit a bit
- 29. Python: aritmética bit a bit sin signo de 32 bit
- 30. AND bit a bit, bit a bit pregunta Incluido O, en Java
Esta es una buena pregunta que necesita reformularse, pero todavía no tengo privilegios de edición .... –