¿Cómo se puede leer un número entero poco a poco en Java?
Frecuentes
Visto 47,320 veces
5 Respuestas
105
Usando operadores bit a bit:
int getBit(int n, int k) {
return (n >> k) & 1;
}
Explicación (en bits):
n
100010101011101010 (example)
n >> 5
000001000101010111 (all bits are moved over 5 spots, therefore
& the bit you want is at the end)
000000000000000001 (0 means it will always be 0,
= 1 means that it will keep the old value)
1
Respondido 18 Oct 15, 16:10
12
return (n >> k) & 1;
Aquí, n >> k
cambia el k
-th bit en la posición menos significativa, y & 1
enmascara todo lo demás.
Respondido el 03 de enero de 13 a las 19:01
6
Si el bit significativo más bajo es el número de bit 0
:
return (n>>k)&1;
Respondido el 03 de enero de 13 a las 19:01
3
o usar:
boolean getBit(int n, int k) {
return ((n >> k) & 1) == 1;
}
si quieres un valor booleano
Respondido el 22 de Septiembre de 20 a las 12:09
2
También puede usar la propiedad del módulo para esto. Si su número es par, el bit significativo más bajo es cero; de lo contrario, (impar) es uno.
return (n>>k)%2;
Respondido 05 Jul 17, 23:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java or haz tu propia pregunta.
esto comienza desde el bit menos significativo como el bit 0, ¿verdad? - user1921187
@ user1921187 Sí, lo es.
getBit(0b10001, 0)
volvería1
ygetBit(0b10001, 1)
volvería0
. - tckmnbueno, si ejecuto getBit(n, 0), obtendría el segundo bit desde la derecha. Entonces k=2 en realidad me daría el bit menos significativo, por lo que es el bit 0. ¿Estoy viendo algo mal? - user1921187
@ user1921187 Lo siento, edité mi comentario. No estaba pensando :P Si corriste
getBit(n, 0)
, obtendrías el último bit. - tckmnRespuesta válida. Solo otro pensamiento sobre esto es, desplazar a la izquierda 1 por k veces y verificar. n & (1 << k) - Durja