alessandri   01-03-2022, 02:56
#1
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  Huh

¿qué regla sigue para conseguir ese resultado?
Grandamakulo   01-03-2022, 10:24
#2
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...
alessandri   02-03-2022, 03:08
#3
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.
Grandamakulo   02-03-2022, 11:19
#4
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...
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.