dogdark escribió:
la duda que me quedo franco es de donde salio ese 198 y el dos si lo que debería convertir el 710 en dos valores de 8 bits.
A ver si sirve de esta forma. Te acuerdas de cuando nos enseñaban las unidades, decenas, centenas, etc? Eso es porque nosotros contamos con dígitos que van desde el 0 al 9, por lo tanto los números los descomponemos en varios dígitos que van del 0 al 9.
Si queremos contar hasta el 9, basta con un dígito, pero cuando llegamos al diez, debemos agregar un dígito adicional, así:
Decimos que tenemos
una decena y
cero unidades. Luego seguimos felices hasta el 99 (9 decenas, 9 unidades). Para pasar al cien agregamos un nuevo dígito:
100 (una centena, cero decenas, cero unidades).
Ahora bien, si tenemos el número 23, cómo sabemos matemáticamente cuantas decenas y cuantas unidades tenemos? Usando números enteros, el cálculo es así:
Si X es el número original, entonces
Si X = 23
Código: Seleccionar todo
Decenas = 23 / 10 = 2 (división entera, sin decimales)
Unidades = 23 - 2*10 = 23 - 20 = 3
Entonces el número 23 en nuestro sistema decimal (basado en 10) se compone de los dígitos 2 y 3. En computación diríamos que las unidades son dígitos
Menos Significativos, y que las decenas son dígitos
Más Significativos (*).
La conversión que hice para pasar de 710 a (198,2) es la misma idea, pero en vez de usar "dígitos" de 10, usé bytes. Un byte puede contar desde 0 a 255 (256 combinaciones), entonces cuando llegas al número 256, necesitas agregar un byte adicional, tal como lo hicimos en las decenas. Si llamamos L al byte Menos Significativo, y H al byte Más Significativo (Low, High), tenemos:
Entonces si el número decimal es 710, para representarlo en bytes sería:
Código: Seleccionar todo
H = 710 / 256 = 2 (división entera, siempre)
L = 710 - 256*2 = 710 - 512 = 198
Esto es válido para cualquier sistema numérico. En computación se usa frecuentemente el binario en donde cada dígito puede tomar dos valores (0, 1), y el hexadecimal en donde cada dígito puede tomar 16 valores (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). Por ejemplo el número decimal 31 calculado como hexadecimal será:
Código: Seleccionar todo
H = 31 / 16 = 1 (división entera)
L = 31 - 1*16 = 31 - 16 = 15 = F
Por lo tanto el número 31 decimal se escribe como 1F en hexadecimal.
Cualquier duda dale no más y pregunta!
(*) Usamos los valores Más Significativos a la derecha de los Menos Significativos. Esa, como muchas otras cosas en la vida, son sólo por convención. Perfectamente podríamos usar los números Menos Significativos a la derecha, por lo que el número
doscientos cincuenta y uno se escribiría así : 152, de hecho hay arquitectura de computadores que ordenan los bytes de esa forma. Así como eso, hay muchas cosas que aprendimos desde muy chicos y creemos que naturalmente son así, pero perfectamente podrían ser diferentes.