Autor Tema: Multiplicación 8bit x 8bit para conseguir 16bit en C18  (Leído 4687 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Multiplicación 8bit x 8bit para conseguir 16bit en C18
« Respuesta #15 en: 24 de Junio de 2012, 13:45:10 »
Hola, aporto mi granito de arena. Todo lo que comento Zardoz es correcto. Lo que quieres hacer es un caracteristica llamada en el estandart C "Integral promotions" o promocion a enteros. El estandart dice que toda operacion que involucre a operandos menores a un entero estos deben ser promocionados o convertidos a  entero y ahi realizar la operacion. Esto es barbaro en un programa corriendo en una PC en un micro de 8 bits es un suicidio porque no es lo mismo manejar un char sin signo ( tipico registro ) que un entero con signo que pude ocupar 16 o 32 bits dependiendo de la plataforma. Por eso este compilador y casi todos los compiladores de embebidos que conozco la promocion a enteros es deshabilitada por default. Para hacer lo que queres hacer ( char * char = int ) o habilitas la promocion a enteros o colcas el cast que indico Zardoz. La opcion del cast es la mas eficiente ya que tratas el caso en particular y no en general. Este es unos de los principales errores de programacion cuando escribis codigo multiplataforma, yo nunca confio en esta caracteristica y coloco siempre los cast cuando es necesario.
Con respecto a utilizar el multiplicador x hardware para mi es un tema del compilador, muchos compiladores permiten especificar la sub-familia con la que se esta trabajando, de esta manera se habilitan ciertas caracteristicas especificas de la familia en si, ejemplo de esto es un compilador para PC podias especificar si generabas codigo para un 386, 486, 586, etc.

Saludos !


 

anything