Processing math: 100%

6 votos

Convierte la siguiente representación hexadecimal de números binarios de complemento a 2 en números decimales.

Necesito convertir la siguiente representación hexadecimal de números binarios de complemento a 2 a números decimales No estoy seguro de si lo estoy haciendo correctamente o me falta algún paso?

a. xF0

b. x7FF

c. x16

d. x8000


Mi intento de convertirlo primero en Decimal y luego en Binario:

a. xF0 = 240 = 11110000

b. x7FF = 2047 = 111111111

c. x16 = 22 = 10110

d. x8000 = 32768 = 1000000000000000

1voto

David K Puntos 19172

Si pones "complemento a dos" en el cuadro de búsqueda, puedes encontrar un gran número de preguntas y respuestas que describen el complemento a dos.

Pero intentaré dar una visión rápida de la notación hexadecimal frente a la binaria y el complemento a dos.

Hexadecimal frente a binario

La conversión entre números hexadecimales y binarios es, en realidad, extremadamente fácil. Puedes hacerlo a mano sin necesidad de cálculos intermedios. El dato clave que hay que recordar es que un dígito hexadecimal equivale a exactamente cuatro dígitos binarios.

Por ejemplo, d16=11012. (Subíndice 16 indica un número hexadecimal, el subíndice 2 indica binario). Del mismo modo, 816=10002, 716=01112, y 116=00012. (Obsérvese que para el propósito de este algoritmo de conversión siempre escriba cuatro dígitos del número binario).

En el caso de múltiples dígitos hexadecimales, podemos convertirlos a binario simplemente concatenando los equivalentes de cuatro bits: 178d16=0001 0111 1000 11012. He mostrado el número binario con espacios entre los grupos de cuatro bits. Por supuesto, cuando escribir el número normalmente probablemente cerraría esos espacios, y podría omitir los ceros a la izquierda. Sólo recuerda que sólo puedes omitir los ceros a la izquierda después de concatenando los grupos de cuatro bits juntos.

La conversión de binario a hexadecimal es simplemente el proceso inverso. Agrupa los bits de tu número binario en grupos de cuatro bits, empezando por el bit más a la derecha. Cada grupo de cuatro bits se sustituye por un bit hexadecimal igual. Así, si nos dan el número binario 10111100011012, podemos escribir 1 0111 1000 11012=178d16.

Complemento a dos

Matemáticamente, se puede hablar de una representación binaria genérica "sin signo" de los números no negativos; se pueden utilizar tantos bits como sean necesarios para representar cualquier número entero no negativo que se desee. Pero no existe una representación genérica complemento a dos representación. Sólo hay n -representaciones de complemento a dos bits.

En la gran mayoría de las aplicaciones actuales, n es 16 o 32, pero a veces es 64 o incluso 8. Pero n no tiene que ser un poder de 2, en principio, y en el pasado había ordenadores que almacenaban enteros utilizando n bits donde n no era un poder de 2.

El menor número que se puede escribir en un n -representación de complemento a dos bits es 2n1. El más grande es 2n11. También es posible escribir cualquier número entero entre esos dos valores.

Para escribir un entero no negativo en n -en notación de complemento a dos, siempre que el número no sea mayor que 2n11, simplemente se escribe el número en binario y se "rellena" a la izquierda con 0 dígitos hasta que haya n dígitos en total. El número con el que se empieza no puede tener más de n1 bits antes del "relleno". por lo que el bit más a la izquierda siempre será 0.

Para escribir un número entero negativo, siempre que no sea inferior a 2n1, el procedimiento que se suele recomendar es escribir el valor absoluto del número como un número binario ordinario, "voltear" todos los bits (cada 0 se convierte en 1 y cada 1 se convierte en 0 ), y a continuación añade uno. El bit más a la izquierda del resultado será siempre 1.

Matemáticamente, el n -representación en complemento a dos de un entero x para 2n1x<0 es igual al número binario ordinario (sin signo) igual a 2n+x. En otras palabras, calcular 2n+x utilizando la notación binaria ordinaria (sin límite de bits) notación binaria, y después de haber escrito el resultado declare que es n -complemento a dos bits. Esta es una alternativa al algoritmo de "voltear los bits y sumar uno" y siempre produce el mismo resultado, siempre que el número esté dentro del rango dentro del rango que puede ser representado. Está claro que cuando el resultado se ve como un número sin signo, está en el rango 2n1 a 2n1, por lo que siempre es un n -bit número binario cuyo bit más a la izquierda es 1.

0voto

Evan Trimboli Puntos 15857

Lo estás haciendo correctamente, pero te falta un paso. Sabes cómo obtener el valor sin signo, pero te falta el siguiente paso que te da el valor con signo.

Llamemos a c el valor sin signo, L la longitud de los bits y n el valor con signo. Al igual que Tony, voy a asumir que a. y c. se supone que son de 8 bits, y b. y d. se supone que son de 16 bits. Esto significa entonces que L=8 o 16. Para obtener n de c , tú XOR c con 2L1 , sumar 1 y luego multiplicar por 1 . O mucho más fácil, n=c2L .

a. xF0 como un byte sin signo significaría efectivamente 240. ¿Pero qué significa como byte con signo? Es un ejemplo muy bien elegido con fines educativos, ya que, como explica Dave, cada dígito hexadecimal corresponde a cuatro bits, y como xF es de cuatro bits y x0 es de cuatro bits, se "alternan" entre sí (que es lo mismo que Tony llamó XOR con xFF ), es decir, xF0 pasa a x0F y eso significa 15 en decimal. Ahora se suma x01 para obtener x10 que es 16. Así que xF0 como un byte con signo significa 16 . Puede comprobarlo viendo que 240256=16 .

b. Si se supone que es una palabra de 16 bits, por ejemplo x07FF el bit de signo es 0, así que ya está. Es 2047, tal como dijiste.

c. Tanto si se trata de un byte como de una palabra, el bit de signo también es 0 y ya está.

d. Esta puede ser muy confusa si eres mínimamente disléxico, así que tienes que ir paso a paso. Haz x8000 XOR xFFFF para obtener x7FFF que significa 32767. Suma 1 para obtener 32768 y multiplica por 1 para obtener 32768 . Compruébelo con el método de la resta: tenemos c=32768 y L=16 Así que entonces 2L=65536 y por lo tanto n=3276865536=32768 .

¿Le pareció que la letra d. era tortuosa y confusa, y le hizo preguntarse por qué utilizamos el complemento a dos y no un método más sencillo (como un simple bit de signo sin complemento a dos)? La respuesta es que nosotros no utilizamos el complemento a dos, sino los ordenadores. Y para los ordenadores, el complemento a dos resuelve dos problemas importantes: asegura una representación única para el 0 y preserva el bit menos significativo como bit de paridad. Pero puede que le esté pisando los talones a tu profesor, así que no diré nada más al respecto.

Por último, prometí que mencionaría el Modo Programador en la Calculadora de Windows. Estoy usando Windows 8. En la aplicación de escritorio, presiono Windows-R y escribo calc para invocar la Calculadora 6.2 de Windows 8.0. Luego cambio del Modo Científico al Modo Programador pulsando Alt-3. (O puedes usar el menú: Ver -> Programador). Puedes ponerlo en byte, palabra, doble palabra ( L=32 ) o la palabra cuádruple ( L=64 ). Fíjate también en el botón Xor. Para realizar los ejercicios del a. al d. con el botón Xor, utilice la configuración Dword o Qword. Y luego, para estar más seguro, ajústelo a Word y calcule 22 . A continuación, pulse repetidamente Enter hasta llegar a 32768 . Mira un poco más abajo donde dice 32768 . ¿Te resulta familiar? Y por último, ponlo en Byte y calcula 016 .

Por cierto, la calculadora de Mac OS X también tiene modo programador.

0voto

Para mi respuesta, voy a suponer que a. y c. se supone que son de 8 bits, y b. y d. se supone que son de 16 bits.

Sólo hay dos pasos. Primero, usted XOR el número con FF o FFFF y luego agregas 1. Eso es todo.

Así, con F0 , tú XOR con FF para obtener 15, y luego añades 1 para obtener 16, así que F0 significa 16 .

Si todavía no está seguro, puede comprobarlo con la calculadora de su ordenador en modo programador o con una calculadora en línea como http://planetcalc.com/747/ Estoy seguro de que hay una manera de utilizar WolframAlpha para este propósito, también.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X