Mensajes: 55
Temas: 18
Gracias Recibidas: 7 en 5 posts
Gracias Dadas: 2
Registro en: Jul 2020
Hola amigos.
¿alguien me puede explicar por qué da ese resultado?
dim a as byte =14
dim b as byte = 19
print (a-b)
251
¿qué regla sigue para conseguir ese resultado?
Mensajes: 114
Temas: 14
Gracias Recibidas: 34 en 26 posts
Gracias Dadas: 135
Registro en: Nov 2020
El formato byte no tiene números negativos, sus valores van de 0 a 255. Por tal motivo, al calcular un resultado que dé un número por debajo de cero, lo toma como complementario a 255, es decir, en tu ejemplo baja cinco desde cero —incluyéndolo—, o sea, 0, -1 eq 255, -2 eq 254, -3 eq 253, -4 eq 252, -5 eq 251.
Aunque me he explicado fatal, esto se ve fenomenal con el formatos «entero» que sí incluye negativos, pero viéndolos en binario, ya que el dígito más significativo se toma como signo.
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
Mensajes: 55
Temas: 18
Gracias Recibidas: 7 en 5 posts
Gracias Dadas: 2
Registro en: Jul 2020
Gracias hermano, pero y esto?
dim a as byte =14
dim b as byte = 19
dim c as float
c=a-b
print © 'Esto da 251
Entonces hay que añadir: "No se puede utilizar variables Byte para hacer restas en las que el sustraendo es mayor al minuendo,
aunque el resultado se cargue a una variable Float o Intiger"
saludos.
Mensajes: 114
Temas: 14
Gracias Recibidas: 34 en 26 posts
Gracias Dadas: 135
Registro en: Nov 2020
Claro, eso es normal: la operación la estás haciendo en tipo «byte» y luego cargas el resultado en un «float». Para que te maneje los negativos debes cargar primero los datos en tipos que los acepten o emplear funciones de conversión, como CFloat().
En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...