n = (n ^ (n>>15)) - (n>>15);
Un simple programa implementando esto:
int main(void){short int n = -5510;n = (n ^ (n>>15)) - (n>>15);printf("Valor Absoluto %i \n",n);}
En Assembler se puede implementar en tres simples lineas.
Aca les paso la misma funcion para Assembler con Sintaxys de AT&T (compila con Gcc):
.datanum:.long -145 # Numero a negarp: .string "Numero Negado: %d\n" # String para mostrar el numero.text.global mainmain:movl num, %eaxmovl %eax,%ebx # esta dos lineas cargo el numero en registrosarl $15,%ebxxorl %ebx, %eaxsubl %ebx, %eax # esta tres lineas calculan el valor absolutopushl %eaxpushl $pcall printf # tres lineas para mostrarloaddl $8, %espret
No hay comentarios:
Publicar un comentario