Antes de nada, corregir mi código. Lo pegué mal pporque estuve probando con bytes antes de escribir el mensaje y puse mal la máscara
:
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
XCODE </td></tr><tr><td id='XCODE'><!--exc1-->int checkOverflow( unsigned n1, unsigned n2 )
{
unsigned mask = 0x80000000;
while( mask & ((n1 & mask) ^ (n2 & mask)) ) {
mask >>= 1;
mask &= 0x7fffffff;
}
return mask & (n1 & mask) & (n2 & mask);
}<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
Ahora por partes.
Lo primero es que yo no te he faltado al respeto, lo único que dije es que no tenías educación por dudar de mí nada más entrar en el foro y sin ningún motivo. Cosa que mantengo.
Además veo que sigues llendo en plan prepotente al seguir queriendo salirte con la tuya aun habiendo demostrado que no tienes razón.
El código que has puesto para demostrar que mi código no funciona NO FUNCIONA. Si lo hace es por un fallo del Visual C, porque
n en el segundo for no está declarada (la declaras en el primero). También me da algún error en la llamada a pow(), pero eso podría ser cosa del MingW.
Aunque a ti te funcione solo demostraría que el código que pegué mal está... pues eso, mal.
Bueno si mi programa no es valido porque genera instrucciones equivalentes a una resta tu programa tampoco seria valido porque la operación >>1 es equivalente a dividir entre 2 no estoy diciendo que genera las mismas instrucciones en ensamblador estoy diciendo que mask >>= 1 es equivalente a mask /=2 ; en el programa que fue enviado antes por nagisa como solución a este reto se uso el operador != y aun así fue considerado como valido .
Esto demuestra que no sabes cómo salirte con la tuya.
1º Un CMP realiza una resta.
2º Un desplazamiento no realiza una división, solo desplaza los bits por mucho que el resultado sea el mismo.
3º Los desplazamientos entran dentro de los operadores permitidos por el reto, los operadores aritméticos no, y eso incluye al CMP.
4º Nagisa usa el != y el == para preguntar si es igual o distinto de CERO. Todos sabemos que eso no necesita hacer una resta. ¿Por qué es así? Es muy fácil...
Deberías entender esto antes de intentar dar lecciones a los demás, no sea que te las den a ti.
Una de dos, o no tienes ni idea o no sabes a que agarrarte para intentar salirte con la tuya. En cualquier caso, allá tú.
Termino pidiendo disculpas al moderador si soy algo borde, pero no aguanto los prepotentes que intentan dar lecciones y menos aun cuando no llevan la razón.