No entiendo la tabla de verdad que has puesto para el ejercicio 2. Si te dicen que la entrada es un entero no negativo de 3 bits, no debería tener sólo 3 variables de entrada, y 7 combinaciones de entrada (001, 010, 011, 100, 101, 110, 111)?
Por cierto, duplicar un número binario (multiplicar por 10 en binario) funciona de forma similar a multiplicar por 10 un número decimal. No haría falta ni poner puertas lógicas.
-
Para el ejercicio 1, vas bien, en la representación complemento a 2, si el número es negativo (el primer bit, el signo, es 1), entonces tienes que negar todos los dígitos y sumar 1, y lo que te queda es el valor absoluto. Si el número es positivo entonces ya es el valor absoluto. Como también tienes 3 bits, solo hay 8 casos (000, 001, 010, 011, 100, 101, 110, 111), no demasiados como para tratarlos manualmente.
Luego para pasar de la tabla de verdad a una función lógica, hazlo como tu profesor quiera... en mi clase lo hacíamos con 'minterms' o 'maxterms' (sin optimizar) o con mapas de Karnaugh (optimizando).