valor de Retorno

Iniciado por <<<-Basura->>>, 1 Enero 2014, 17:40 PM

0 Miembros y 1 Visitante están viendo este tema.

<<<-Basura->>>

Tengo este código: 

Código (cpp) [Seleccionar]

unsigned short cksum(struct ip *ip, int len){
           long sum = 0;  /* assume 32 bit long, 16 bit short */

           while(len > 1){
             sum += *((unsigned short*) ip)++;
             if(sum & 0x80000000)   /* if high order bit set, fold */
               sum = (sum & 0xFFFF) + (sum >> 16);
             len -= 2;
           }

           if(len)       /* take care of left over byte */
             sum += (unsigned short) *(unsigned char *)ip;
         
           while(sum>>16)
             sum = (sum & 0xFFFF) + (sum >> 16);

           return ~sum;
}


La linea que me interesa es esta:
Código (cpp) [Seleccionar]
return ~sum;

Mi pregunta es que tipo de que cambio ocasiona el símbolo ~, a la hora de hacer el retorno
<<<--Basura-->>>

amchacon

Es el complemento a uno del número.

El complemento a uno es cuando en la expresión binaria se invierten las cifras: Se cambian los unos por ceros y los ceros por unos.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

<<<-Basura->>>

Te refieres a si tengo estos bytes:

00001111

Al yo aplicar el complemento a uno cambiaran a:

11110000

<<<--Basura-->>>

amchacon

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar