Saltar al contenido principal
LibreTexts Español

1.6: Conversión a partir de numeración decimal

  • Page ID
    154549
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Debido a que los sistemas de numeración octal y hexadecimal tienen bases que son múltiplos de binario (base 2), la conversión de ida y vuelta entre hexadecimal u octal y binario es muy fácil. Además, debido a que estamos muy familiarizados con el sistema decimal, convertir la forma binaria, octal o hexadecimal a decimal es relativamente fácil (simplemente sumar los productos de los valores de cifrado y los pesos de posición). Sin embargo, la conversión de decimal a cualquiera de estos “extraños” sistemas de numeración es un asunto diferente.

    El método que probablemente tendrá más sentido es el método de “prueba y ajuste”, donde se intenta “ajustar” la notación binaria, octal o hexadecimal al valor deseado como se representa en forma decimal. Por ejemplo, digamos que quería representar el valor decimal de 87 en forma binaria. Empecemos dibujando un campo de número binario, completo con valores de ponderación por lugar:

    98.PNG

    Bueno, sabemos que no vamos a tener un bit de “1” en el lugar de los 128, porque eso inmediatamente nos daría un valor mayor al 87. No obstante, dado que el siguiente peso a la derecha (64) es menor que 87, sabemos que hay que tener un “1” ahí.

    24.PNG

    Si tuviéramos que hacer del siguiente lugar a la derecha un “1” también, nuestro valor total sería 64 10 + 32 10, o 96 10. Esto es mayor que 87 10, así que sabemos que este bit debe ser un “0”. Si hacemos que el siguiente bit de lugar (16's) sea igual a “1", esto lleva nuestro valor total a 64 10 10 + 16 10, o 80 10, que está más cerca de nuestro valor deseado (87 10) sin superarlo:

    78.PNG

    Al continuar en esta progresión, estableciendo cada bit de menor peso como necesitamos llegar a nuestro valor total deseado sin superarlo, eventualmente llegaremos a la cifra correcta:

    79.PNG

    Esta estrategia de prueba y ajuste también funcionará con conversiones octales y hexadecimales. Tomemos la misma cifra decimal, 87 10, y convertirla a numeración octal:

    96.PNG

    Si ponemos un cifrado de “1” en el lugar de los 64, tendríamos un valor total de 64 10 (menos de 87 10). Si ponemos un cifrado de “2” en el lugar de los 64, tendríamos un valor total de 128 10 (mayor que 87 10). Esto nos dice que nuestra numeración octal debe comenzar con un “1” en el lugar de los 64:

    025.PNG

    Ahora, necesitamos experimentar con valores de cifrado en el lugar de los 8 para intentar obtener un valor total (decimal) lo más cercano posible a 87 sin superarlo. Probando las primeras opciones de cifrado, obtenemos:

    699.PNG

    Un valor de cifrado de “3” en el lugar de los 8's nos pondría sobre el total deseado de 87 10, entonces “2” lo es!

    fg.PNG

    Ahora, todo lo que necesitamos para hacer un total de 87 es un cifrado de “7” en el lugar de los 1's:

    lpq.PNG

    Por supuesto, si estuviste prestando atención durante la última sección sobre conversiones octal/binarias, te darás cuenta de que podemos tomar la representación binaria de (decimal) 87 10, que previamente determinamos que era 1010111 2, y fácilmente convertir de eso a octal para comprobar nuestro trabajo:

    p [.PNG

    ¿Podemos hacer la conversión decimal-a-hexadecimal de la misma manera? Claro, pero ¿quién querría? Este método es sencillo de entender, pero laborioso de llevar a cabo. Hay otra manera de hacer estas conversiones, que es esencialmente la misma (matemáticamente), pero más fácil de lograr.

    Este otro método utiliza ciclos repetidos de división (usando notación decimal) para dividir la numeración decimal en múltiplos de valores binarios, octales o hexadecimales de peso de lugar. En el primer ciclo de división, tomamos el número decimal original y lo dividimos por la base del sistema de numeración al que estamos convirtiendo (binario=2 octal=8, hex=16). Luego, tomamos la porción de número entero del resultado de división (cociente) y la dividimos nuevamente por el valor base, y así sucesivamente, hasta que terminemos con un cociente de menos de 1. Los dígitos binarios, octales o hexadecimales están determinados por los “restos” sobrantes por cada paso de división. Veamos cómo funciona esto para binario, con el ejemplo decimal de 87 10:

    ] [.PNG

    Los bits binarios se ensamblan a partir de los restos de los pasos de división sucesivos, comenzando con el LSB y procediendo al MSB. En este caso, llegamos a una notación binaria de 1010111 2. Cuando dividimos por 2, siempre obtendremos un cociente que termina con “.0” o “.5”, es decir, un resto de 0 o 1. Como se dijo antes, esta técnica de división de repetición para la conversión funcionará para sistemas de numeración distintos a los binarios. Si tuviéramos que realizar divisiones sucesivas usando un número diferente, como 8 para la conversión a octal, necesariamente obtendremos restos entre 0 y 7. Probemos esto con el mismo número decimal, 87 10:

    899.PNG

    Podemos utilizar una técnica similar para convertir sistemas de numeración que tratan con cantidades menores a 1, también. Para convertir un número decimal menor que 1 en binario, octal o hexadecimal, usamos multiplicación repetida, tomando la porción entera del producto en cada paso como el siguiente dígito de nuestro número convertido. Usemos como ejemplo el número decimal 0.8125 10, convirtiendo a binario:

    0.. PNG

    Al igual que con el proceso de división de repetición para enteros, cada paso nos da el siguiente dígito (o bit) más alejado del “punto”. Con entero (división), trabajamos del LSB al MSB (de derecha a izquierda), pero con multiplicación repetida, trabajamos de izquierda a derecha. Para convertir un número decimal mayor a 1, con un componente < 1, debemos utilizar ambas técnicas, una a la vez. Tomemos el ejemplo decimal de 54.40625 10, convirtiendo a binario:

    .3.PNG.6.PNG


    This page titled 1.6: Conversión a partir de numeración decimal is shared under a GNU Free Documentation License 1.3 license and was authored, remixed, and/or curated by Tony R. Kuphaldt (All About Circuits) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.