Código
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
return ~sum;
Mi pregunta es que tipo de que cambio ocasiona el símbolo ~, a la hora de hacer el retorno