Tema: XOR en ABAP
Ver Mensaje Individual
  #4  
Viejo 12/03/10, 03:18:45
Avatar de abapedro
abapedro abapedro is offline
Member
 
Fecha de Ingreso: mar 2007
Mensajes: 83
Funcion para implementar XOR de enteros

Hola Ariel-Stafe,

Me pareció interesante el reto del XOR y creé una función que lo implementa:

FUNCTION ZXOR.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(ZNUMA) TYPE INTEGER
*" REFERENCE(ZNUMB) TYPE INTEGER
*" EXPORTING
*" REFERENCE(ZNUMC) TYPE INTEGER
*"----------------------------------------------------------------------

data: z_int type integer.
data: z_potencia type integer.
data: z_numa type integer.
data: z_numb type integer.


z_int = 9.
znumc = 0.
z_numa = znuma.
z_numb = znumb.

do 10 times.

z_potencia = 2 ** z_int.
if ( z_numa ge z_potencia ) and ( z_numb ge z_potencia ).
z_numa = z_numa - z_potencia.
z_numb = z_numb - z_potencia.
elseif ( z_numa ge z_potencia ).
z_numa = z_numa - z_potencia.
znumc = znumc + z_potencia.
elseif ( z_numb ge z_potencia ).
z_numb = z_numb - z_potencia.
znumc = znumc + z_potencia.
endif.
z_int = z_int - 1.

enddo.

ENDFUNCTION.

Seguramente se puede pulir un poco, pero así opera bien hasta donde entiendo.

Como puede observar, esta hecha para números de solo 3 cifras. Si se quisiera utilizar para números mayores que 1023, habría que pasar el z_int a 10 (o a mayor valor) e igualmente el "do" sería "do 11 times", etc.

Espero que le sirva.

Abapedro
Responder Con Cita