F1 Help! La solución que buscabas

Desarrollo, programación, tips, consejos y soluciones para los usarios de PC

martes, 17 de noviembre de 2009

Calcular Valor Absoluto

En esta entrada les paso un simple codigo para calcular el valor absoluto de un Short (16 bits) en una sola linea:

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):

.data
num:.long -145 # Numero a negar
p: .string "Numero Negado: %d\n" # String para mostrar el numero
.text
.global main
main:
movl num, %eax
movl %eax,%ebx # esta dos lineas cargo el numero en registro

sarl $15,%ebx
xorl %ebx, %eax
subl %ebx, %eax # esta tres lineas calculan el valor absoluto
pushl %eax
pushl $p
call printf # tres lineas para mostrarlo
addl $8, %esp

ret

No hay comentarios: