¿Cuál es la explicación de este código?

Programa:

prueba de clase{
public static void main (String args []) {
para (int i = 1; i <= 100; i ++) {
System.out.println (“i =” + i + “b (i) =” + Integer.toBinaryString (i) + “b (~ i) =” + Integer.toBinaryString (~ i));
}
}
}

Salida:

Explicacion:

  • ~ (Tilde) El operador es un inversor de bits. ~ (0) = 1 y ~ (1) = 0.
  • En Java, los enteros tienen 32 bits de longitud.

Cuando, i = 1: los 32 bits que lo representan en la variable son = 0 (… 29 más …) 01
Entonces, ~ (i) puede deducirse como el inverso de 0 (… 29 más …) 01 que es 1 (… 29 más …) 10, que se puede ver en la captura de pantalla.

Tenga en cuenta que Java no imprime los 0s anteriores (0s del lado izquierdo), por lo que el binario de i (2nd Column) es más corto en longitud.

Los enteros de Java son de 32 bits. Eso significa que cada entero está representado por 32 1s y 0s.
1 se representa como 00000000000000000000000000000001.
El operador ~ voltea todos los bits. Es por eso que obtienes 11111111111111111111111111111110 como tu primera salida.
Del mismo modo, imprimiría 100 líneas de los primeros 100 enteros en binario con sus bits invertidos.

More Interesting

¿Por qué la recursión me causa tantos problemas?

¿Cómo elige Chrome el color de las rayas en las miniaturas de la página "Más visitadas"? Está claramente basado en el favicon, pero no puedo decir exactamente cómo se deriva.

¿Puede la longitud de un comando Mathematica o Wolfram | Alpha ser una aproximación aproximada de su complejidad de Kolmogorov?

¿Es posible cuantificar la experiencia laboral?

¿Cuáles son algunos algoritmos inesperados que se usan en física y ciencia de materiales?

¿Hay alguna matemática recientemente descubierta (últimos 50 años) comprensible para estudiantes de pregrado o está todo muy avanzado?

¿Necesito seguir la ruta de programación competitiva para ser muy bueno en el desarrollo de algoritmos?

¿Cuál es el algoritmo detrás de las OTP (contraseñas de un solo uso)?

¿Es así como se elimina de un árbol de búsqueda binario cuando un padre tiene dos subárboles?

Cómo calcular (n!) Mod p y nCr mod m, como se requiere en varias preguntas algorítmicas

¿Qué técnica general siguen los autores al escribir libros técnicos en LaTeX?

¿Necesito tener el conocimiento de las estructuras de datos y el algoritmo, antes de comenzar a practicar en spoj, codchef, topcoder, etc.? Sé un poco de C ++.

¿Cómo funcionará el algoritmo KNN para la segmentación de imágenes?

¿La técnica de dos punteros se considera una búsqueda binaria en algunos problemas?

Un profesor me dijo que no me molestara en aprender muchos lenguajes de programación sino que me enfocara solo en C ++, estructuras de datos y algoritmos, ¿tiene razón?