Así que actualmente estoy trabajando en algo y he convertido todos los dígitos decimales 0-9 en binario. Pero ahora quiero tomar digamos 6 en binario y aumentar su orden de magnitud en base 10 (convirtiendo 6 en 60) sin convertir de nuevo a base 10. ¿Es esto posible? Si es así, ¿hay alguna manera de hacerlo con cualquier número? X -> X0?
EDITAR 1: lo siento, la primera parte de la pregunta fue muy vaga y olvidé mencionar que estoy tratando de hacer esto con puertas lógicas.
arithmetic
binary
usuario76675
fuente
fuente
Respuestas:
Supongo que la tarea es calcular . No necesitas hacer multiplicación. Un solo sumador binario es suficiente ya que lo que significa que agrega una vez desplazado a la izquierda a 3 veces desplazado a la izquierda . Para la multiplicación general , consulte este artículo .mul(10,a)=10a
fuente
10
es una constante, por lo que no necesitamos el multiplicador de propósito general. También ayuda que haya usado palabras que son fáciles de traducir en puertas lógicas, ya que el OP mencionó que ese era su objetivo final.imul
instrucción. ( godbolt.org/g/uSUSHu para x86, ARM y salida del compilador asm MIPS para una*10
función trivial que probablemente pueda leer incluso si no conoce asm). En realidad, para x86, los compiladores suelen usarloa = a + a*4;
a+=a;
porque es más eficiente: stackoverflow.com/questions/6120207/imul-or-shift-instruction .Multiplicar por 10 es lo mismo que multiplicar por . Para multiplicar un número binario por 10, solo tenemos que sumar y . Por ejemplo, se implementa por La entrada es , y la salida es .(1010)2 x x0 x000 6×10=60
fuente
Por supuesto. Simplemente calcula utilizando la versión binaria de la multiplicación larga (o algún otro algoritmo). Lo bueno de la multiplicación larga en binario es que nunca tienes que cargar nada, excepto cuando estás sumando cosas al final.1010b×110b
y tenga en cuenta que , como se esperaba.11100b=60d
fuente
Multiplique por 8 (desplazamiento a la izquierda 3) y luego agregue una multiplicación por dos (desplazamiento a la izquierda 1).
fuente