Guest User

Untitled

a guest
Nov 20th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.58 KB | None | 0 0
  1. public class DesplazamientoBitsJava {
  2. public static void main(String[] args) {
  3. System.out.println("CONTENIDO DE: WWW.JAVADESDE0.COM");
  4. System.out.println("El tamaño de un tipo de dato int guarda en memoria: " + Integer.BYTES + " bytes" + " o " + Integer.SIZE + " Bits.");
  5. System.out.println("Un byte equivale a 8 bits. Por tanto, si tenemos " + Integer.BYTES + " * 8 = " + (Integer.BYTES*8) + " Bits.");
  6. //OTRA MANERA DE SACAR EL TOTAL DE BITS POR PANTALLAS ES MULTIPLICAR EL TOTAL DE BYTES DE UN TIPO DE DATO POR 8 (EL NÚMERO DE BITS) O BIEN UTILIZAR Integer.SIZE
  7. System.out.println("\tSi transformamos el valor máximo a binario: " + Integer.MAX_VALUE + " En binario: " + Integer.toString(Integer.MAX_VALUE, 2));
  8. /*PARA REALIZAR LA CONVERSION DE INTEGER A BINARIO TENEMOS DOS OPCIONES:
  9. * 1. Integer.toString(A, B) --> A ES EL NÚMERO A CONVERTIR Y B LA BASE
  10. * EN ESTE CASO, A ES EL VALOR MÁXIMO DE UN INTEGER (Integer.MAX_VALUE) Y B LA BASE, BINARIO ES BASE 2
  11. * 2.Integer.toBinaryString(A) --> ESTA UNICAMENTE SE UNA PARA BINARIOS EN DIFERENCIA CON LA ANTERIOR, Y A ES EL NÚMERO A CONVERTIR.
  12. */
  13. System.out.println("\tSi transformamos el valor mínimo a binario: " + Integer.MIN_VALUE + " En binario: " + Integer.toString(Integer.MIN_VALUE, 2));
  14. System.out.println("Si nos fijamos, el este caso en particular, el negativo tiene un número más que el positivo. ¿Sabéis el porque?");
  15. System.out.println("Un numero ya sea positivo, o negativo tiene: 31 bits y el 32 bits (es el del símbolo). " );
  16. System.out.println("Una manera de que podamos ver que esto es cierto es: ");
  17. System.out.println("\tSi al valor máximo de un integer le añadimos 1: " + (Integer.toBinaryString(Integer.MAX_VALUE + 1)));
  18. System.out.println("\tPodemos ver que el 1 está acomapañado por 31 bits a 0, ese es el bit encargado de mostrar si un número es positivo + (valor 0) o negativo - (valor 1)");
  19. //AÑADIENDOSELO SIEMPRE A UN BINARIO SI HACEMOS INTEGER.MAXVALUE + 1, NOS DEVOLVERÁ EL VALOR MÍNIMO POR EL CONCEPTO QUE DE RANGOS CIRCULARES VISTO EN CLASES ANTERIORES.
  20. System.out.println("Esto es debido a que el último bit el 32 empezando de derecha a izquierda es el que nos indica si un número es + o negativo." );
  21. System.out.println("En caso de ser positivo, el número ocupa 31 bits y el bit 32 es un 0 al ser un 0 a la izquierda, este se omite, es como tener un tío en Grana (Granada)." );
  22. System.out.println("En caso de ser negativo, el número ocupa 32 bits, 31 del número y 1 del bit 32 (ya que un cero a la izquierda, es como tener un tío en graná (Granada)." );
  23. System.out.println("\tPor lo tanto, em el valor máximo contamos los 1: " + Integer.numberOfLeadingZeros(1));
  24. System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------");
  25. System.out.println("Bien, una vez entendemos todo esto, vamos a explicar el desplazamiento de bits sobre un INT: ");
  26. int numeroA = 1008;
  27. System.out.println("Número original en decimal A:\t" + numeroA + " IMPORTANTE MATIZAR QUE LA AUSENCIA DE SIGNO (+ O -) SE INTERPRETA COMO POSITIVO +");
  28. System.out.println("A en binario: \t\t\t" + Integer.toBinaryString(numeroA));
  29. int numeroRotadoDerechaA = numeroA >> 2; //Desplaza numeroA 2 posiciones a la derecha
  30. System.out.println("A desplazado 2 a la derecha: \t" + Integer.toBinaryString(numeroRotadoDerechaA) +" Cuando se desplazan bits, si el número es positivo, son reemplazados por 0, ya que el signo del número es positivo.");
  31. numeroRotadoDerechaA = numeroA >> 5; //Desplaza numeroA 5 posiciones a la derecha
  32. System.out.println("A desplazado 5 a la derecha: \t" + Integer.toBinaryString(numeroRotadoDerechaA) +" Cuando se desplazan bits, si el número es positivo, son reemplazados por 0, ya que el signo del número es positivo.");
  33. System.out.println("-----------------------------------------------------------------");
  34. int numeroB = 1;
  35. int numeroRotadoDerechaB = numeroB >> 1;
  36. System.out.println("Número original en decimal B:\t" + numeroB);
  37. System.out.println("B en binario: \t\t\t" + Integer.toBinaryString(numeroB));
  38. System.out.println("B desplazado 1 a la derecha: \t" + Integer.toBinaryString(numeroRotadoDerechaB) + " Cuando se desplazan bits, si el número es positivo, son reemplazados por 0, ya que el signo del número es positivo.");
  39. System.out.println("-----------------------------------------------------------------");
  40. int numeroC = -1;
  41. int numeroRotadoDerechaC = numeroC >> 2;
  42. System.out.println("Número original en decimal C:\t" + numeroC);
  43. System.out.println("C en binario: \t\t\t" + Integer.toBinaryString(numeroC));
  44. System.out.println("C desplazado 2 a la derecha: \t" + Integer.toBinaryString(numeroRotadoDerechaC) + " Cuando se desplazan bits, si el número es negativo, son reemplazados por 1, por lo tanto 31 bits de 1 + 1 bit en 1 del signo. En este caso, el resultado es el mismo.");
  45. System.out.println("-----------------------------------------------------------------");
  46. int numeroD = -4032;
  47. int numeroRotadoDerechaD = numeroD >>> 10;
  48. System.out.println("Si utilizamos >>> el triple, dicho operador, no tiene en cuenta el signo. Por lo tanto, trabajamos con 31 bits");
  49. System.out.println("Número original en decimal A:\t" + numeroD);
  50. System.out.println("D en binario: \t\t\t" + Integer.toBinaryString(numeroD));
  51. System.out.println("D desplazado 10 a la derecha:\t" + Integer.toBinaryString(numeroRotadoDerechaD));
  52. System.out.println("-----------------------------------------------------------------");
  53. int numeroE = 11;
  54. int numeroRotadoDerechaE = numeroE >>> 1;
  55. System.out.println("Si utilizamos >>> el triple, dicho operador, no tiene en cuenta el signo. Por lo tanto, trabajamos con 31 bits");
  56. System.out.println("Número original en decimal E:\t" + numeroE);
  57. System.out.println("E en binario: \t\t\t" + Integer.toBinaryString(numeroE));
  58. System.out.println("E desplazado 1 a la derecha: \t\t" + Integer.toBinaryString(numeroRotadoDerechaE));
  59. System.out.println("-----------------------------------------------------------------");
  60. System.out.println("Desplazamiento de bits a la izquierda: ");
  61. System.out.println("El desplazamiento a la izquierda únicamente se diferencia con el de la derecha en 2 matizes: ");
  62. System.out.println("\t1. Utilizamos <<.");
  63. System.out.println("\t2. Siempre sea + o - rellenará a 0.");
  64. System.out.println("-----------------------------------------------------------------");
  65. int numeroF = 255;
  66. int numeroRotadoIzquierdaF = numeroF << 1;
  67. System.out.println("Número original en decimal F:\t" + numeroF);
  68. System.out.println("A en binario: \t\t\t" + Integer.toBinaryString(numeroF));
  69. System.out.println("A desplazado 1 a la izquierda: \t" + Integer.toBinaryString(numeroRotadoIzquierdaF));
  70. System.out.println("-----------------------------------------------------------------");
  71. int numeroG = -524287;
  72. int numeroRotadoIzquierdaG = numeroG << 15;
  73. System.out.println("Número original en decimal F:\t" + numeroG);
  74. System.out.println("A en binario: \t\t\t" + Integer.toBinaryString(numeroG));
  75. System.out.println("A desplazado izquierda: \t" + Integer.toBinaryString(numeroRotadoIzquierdaG));
  76. }
  77. }
Add Comment
Please, Sign In to add comment