elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?  (Leído 7,933 veces)
minicatsCB

Desconectado Desconectado

Mensajes: 12


Ver Perfil
¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« en: 22 Agosto 2013, 17:23 pm »

Hola. Estoy empezando con la programación desde sus inicios, su base, y me he decidido a aprender a programar en JAVA. Y leyendo un pequeño documento de iniciación me sale esta tabla.


Mis dudas son las siguientes:
1- ¿De dónde viene el rango de cada tipo de dato? No tengo idea si tiene que ver con los bits, los bytes, o algo...  :huh: (Esto es lo que más me interesaría saber).
2- ¿A qué se refiere la longitud (en la columna "long.") de "x" bytes?
3- ¿Y sobre el formato?
4- ¿Qué quiere decir con "s.p." y "d.p."? En la parte de datos tipo float y double.

Me gustaría saberlo por curiosidad, ya que al estar en el nivel en que estoy todavía no tengo conocimientos profundos sobre informática. Supongo que mientras más base tenga mejor, ¿no?  :)

Gracias.


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #1 en: 22 Agosto 2013, 18:25 pm »

1. El rango son los valores numéricos máximos y mínimos que toma el tipo de dato.
Ejemplo:
Correcto - > byte myVariable = 127;
Incorrecto -> byte myVariable = 128;

Si se sobrepasa el valor máximo o mínimo permitido para el tipo de dato el editor marcará "possible loss of precision"

El rango depende de la cantidad de bytes asignados a ese tipo de datos.
Ejemplo:
1 byte = 8 bits
8 bits = 256

Código
  1. +------+------------+-------+
  2. | bit  | expression | VALUE |
  3. +------+------------+-------+
  4. |    1 | 1^2        | 2     |
  5. |    2 | 2^2        | 4     |
  6. |    3 | 3^2        | 8     |
  7. |    4 | 4^2        | 16    |
  8. |    5 | 5^2        | 35    |
  9. |    6 | 6^2        | 64    |
  10. |    7 | 7^2        | 128   |
  11. |    8 | 8^2        | 256   |
  12. +------+------------+-------+
  13.  

256 es el rango total, de aquí se toman negativos y positivos incluyendo el cero.
256 / 2 = 128 para negativos.
y quedan 127 para positvos



2. long es la el tamaño en memoria que se le asignó a ese tipo de dato.

3. El formato es el estándar de la IEEE para aritmética.

4. SP y DP se toma para tipos donde el valor puede ser de punto flotante es decir donde hay valores con decimales y se refiere a la exactitud.


Aquí un ejemplo que realicé en la uni.

Código
  1. /* Autor: Darhius929
  2.  * Realizar un programa para conocer los valores maximos y minimos de los tipos de dato.
  3.  * Tipos: byte, short, char, int, long, float, double.
  4.  */
  5.  
  6. public class PrimitiveTypeSize {
  7.    public static void main(String[] args) {
  8. displaySize(Byte.TYPE, Byte.SIZE, Byte.MIN_VALUE, Byte.MAX_VALUE);
  9. displaySize(Short.TYPE, Short.SIZE, Short.MIN_VALUE, Short.MAX_VALUE);
  10. displaySize(Character.TYPE, Character.SIZE, (int) Character.MIN_VALUE, (int) Character.MAX_VALUE);
  11. displaySize(Integer.TYPE, Integer.SIZE, Integer.MIN_VALUE, Integer.MAX_VALUE);
  12. displaySize(Long.TYPE, Long.SIZE, Long.MIN_VALUE, Long.MAX_VALUE);
  13. displaySize(Float.TYPE, Float.SIZE, Float.MIN_VALUE, Float.MAX_VALUE);
  14. displaySize(Double.TYPE, Double.SIZE, Double.MIN_VALUE, Double.MAX_VALUE);
  15. }
  16.  
  17. public static void displaySize(Class<?> type, int size, Number min, Number max) {
  18. System.out.printf("Tipo:%-6s Tamano:%-2s Minimo:%-20s Maximo:%s\n", type, size, min, max);
  19. }
  20. }
  21.  


« Última modificación: 23 Agosto 2013, 00:25 am por Darhius » En línea

abc
minicatsCB

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #2 en: 22 Agosto 2013, 21:43 pm »

Muchas gracias por tus respuestas!
Una duda en algo que has dicho (perdón por mi ignorancia pero nunca he dado esto).  :-\


Citar
El rango depende de la cantidad de bytes asignados a ese tipo de datos.
Ejemplo:
1 byte = 8 bits
8 bits = 256

¿Qué quiere decir exactamente que una cantidad de bytes este "asociado" a un tipo de datos? ¿Tiene algo que ver con la memoria, y ya también a esto de los llamados punteros (o algo así)? No sé si a lo mejor ya nos metemos a nivel de hardware.

Y con respecto a 8 bits=256, son 256 "qué". Me refiero a si no tiene alguna unidad.

Gracias de nuevo.  :)
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #3 en: 22 Agosto 2013, 23:58 pm »

Los lenguajes de programación están basados en estándares.
Hay variaciones de nombre entre lenguajes por ejemplo en C# el equivalente a byte es sbyte pero en cuanto a tamaño son iguales.
Los tipos de datos están relacionados con la memoria porque es ahí donde se almacenarán los valores y de acuerdo al tipo de dato es el tamaño que se le asigna a esa variable.

http://msdn.microsoft.com/es-es/library/ms228360(v=vs.90).aspx

En este caso 256 se refiere al número decimal que se puede representar en 8 bits.
Pero como te comento estos 256 se reparten entre positivos, negativos y 0
En línea

abc
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #4 en: 23 Agosto 2013, 02:22 am »

Mira que sucede cuando sobrepasas el límite del tipo de dato.

Código
  1. public class PrimitivesDataTypes {
  2.    public static void main(String args[]) {
  3.        byte var = 127;
  4.        var--;
  5.        System.out.println(var);
  6.  
  7.        byte vbyte = 127;
  8.        vbyte++;
  9.        System.out.println(vbyte);
  10.    }
  11. }
  12.  

Citar
run:
126
-128
BUILD SUCCESSFUL (total time: 0 seconds)
En línea

abc
trolleoatodos

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #5 en: 23 Agosto 2013, 17:03 pm »

1 haces  bien en empezar con JAVA
2 no te compliques tanto si no vas a hacer cálculos por bits
3 ¿con qué material estás aprendiendo?
4 darhius te ha respondido bien y con paciencia
En línea

minicatsCB

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #6 en: 23 Agosto 2013, 23:35 pm »

Hola, muchas gracias por responder!  :)
Buscando más información por internet he encontrado esto, lo dejo por si alguien visita el tema y le ayuda:


 
Citar
El sistema binario utiliza solamente dos dígitos ( 0 y 1 ) llamados bits. La palabra bit procede de la unión de las palabras binary digit.

Un bit es la unidad mínima de representación de información.
Utilizando 1 bit podremos solamente representar dos valores posibles: 0, 1.
Utilizando 2 bits podemos representar 4 valores: 00, 01, 10, 11.
Utilizando 3 bits podemos representar 8 valores: 000, 001, 010, 011, 100, 101, 110, 111.
Utilizando 4 bits podemos representar 16 valores:0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111.

En general, utilizando N bits podremos representar 2N valores.
Ocho bits forman un byte. El byte es la unidad básica de medida de la información.
Un byte es la cantidad más pequeña de información que el ordenador puede manejar. 

Con un byte se pueden representar 28 = 256 caracteres.
En el interior del ordenador los datos se transmiten y almacenan en grupos de bytes llamados palabras.
La longitud de palabra depende de cada tipo de ordenador: 8, 16, 32, 64.

La fuente es: http://puntocomnoesunlenguaje.blogspot.com.es


·· El material que estoy usando es un pequeño librillo que encontré en internet. Tiene una gran cantidad de información. Este de aquí:

http://es.scribd.com/doc/70377175/El-Lenguaje-de-Programacion-Java

·· Además lo estoy complementando con bastantes tutoriales y clases de internet que la verdad me ayudan bastante. Por ejemplo estos:

Este me está sirviendo muchísimo para afianzar.


Con este empecé a utilizar el editor.


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #7 en: 23 Agosto 2013, 23:50 pm »

Si necesitas más información para entender el sistema binario y sus operaciones busca:

Matemáticas Discretas
Matemáticas para computadoras.
Lenguaje ensamblador.

Citar
Con un byte se pueden representar 28 = 256 caracteres.

Con respecto a este concepto te sugiero que tengas mucho cuidado por eso especifiqué.
Citar
En este caso 256 se refiere al número decimal que se puede representar en 8 bits.

porque si aplicamos el concepto que mencionas podria confundirse como:

Código
  1. byte var = 123456....n;
  2.  

Dónde n sería el caracterer número 256.

Estrictamente hablando cuando el valor de un bit es 1 significa que hay un pulso eléctrico (nivel hardware) y el 0 representaría la ausencia de ese pulso.

En fin, ya no es tema para este subforo.

Saludos!
« Última modificación: 24 Agosto 2013, 01:14 am por Darhius » En línea

abc
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #8 en: 24 Agosto 2013, 06:33 am »

El espacio en memoria que ocupa un dato de tipo boolean no es 1bit, su tamaño no esta especificado ya que este varia dependiendo de la maquina virtual de java.

La "longitud" se refiere al espacio en memoria que va a ocupar dicho dato en la memoria RAM, tomando en cuenta que el manejo de memoria lo hace la maquina virtual de java. Hay que tener claro este tema, a la hora de programar para dispositivos con un hardware muy limitado.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
minicatsCB

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: ¿De dónde viene el rango que admiten los diferentes tipos de datos en Java?
« Respuesta #9 en: 24 Agosto 2013, 11:59 am »

Perdón si puedo cansar  :-\, pero centrándome en la tabla que indiqué al principio:

¿Por qué el rango del byte es de -127 a 128? Y entonces por ejemplo, no puede ser, qué decir, de -130 a 133, por ejemplo (sabiendo que está mal). ¿Tiene que ver con el hardware, con la parte de los bits, cuando hay corriente o no hay?
Es por si me conviene cambiar de subforo.


Citar
En este caso 256 se refiere al número decimal que se puede representar en 8 bits.

Es que no sé si capto bien el significado: con 8 bits se puede representar nada más que el número decimal 256. O que: con 8 bits, se pueden representar valores hasta el 256.  :-[

Una última cosa (porque creo que esta pregunta debería ir a otro subforo).
¿Qué me recomendáis para empezar en esto de la informática? Me refiero en profundidad, lo mismo que si estuviera estudiando la carrera. ¿Por dónde se empieza? Por hardware, con los sistemas binario, octal, hexadecimal... O directamente programación...

Gracias!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Diferentes tipos de INDICES?
Bases de Datos
Skeletron 2 7,724 Último mensaje 17 Febrero 2010, 18:04 pm
por Skeletron
Problema de asignacion (diferentes tipos)
Programación C/C++
soyloqbuskas 4 3,295 Último mensaje 28 Septiembre 2012, 16:21 pm
por anonimo12121
Precios de los diferentes tipos de ataques informáticos
Noticias
wolfbcn 1 2,153 Último mensaje 26 Noviembre 2013, 14:30 pm
por :ohk<any>
Duda Java rango datos
Java
jandepeich 3 2,354 Último mensaje 13 Junio 2015, 23:43 pm
por jandepeich
datos asociados y datos autenticados adicionales son diferentes entre si?
Criptografía
retr02332 1 2,434 Último mensaje 21 Febrero 2020, 19:59 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines