Una regla que no conozco -
alessandri - 01-03-2022
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?
RE: Una regla que no conosco -
Grandamakulo - 01-03-2022
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.
RE: Una regla que no conozco -
alessandri - 02-03-2022
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.
RE: Una regla que no conozco -
Grandamakulo - 02-03-2022
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().