Problema con if in Luffa

di il
3 risposte

Problema con if in Luffa

Buongiorno a tutti. Premetto di essere quasi completamente ignorante sulla programmazione in c++, ma devo capire comunque cosa succede in questo codice.
Come funziona questo if? Non vedo parametri Booleani, quindi non so come interpretarlo

/* Constant Generator */
/* This function generates
round constants of a sub-permutation at a round. */
/* c[2]: the variables which LFSR possess at the round. */
/* cns[2]: the round constants at the round which are generated
through two LFSR-round calculation. */
void genconstant(uint32 *c, uint32 *cns)
{
if(c[0]>>31) {
c[0] = (c[0]<<1) ^ (c[1]>>31) ^ 0xc4d6496c;
c[1] = (c[1]<<1) ^ 0x55c61c8d;
} else {
c[0] = (c[0]<<1) ^ (c[1]>>31);
c[1] <<= 1;
}
cns[0] = c[0];
c[0] = c[1];
c[1] = cns[0];
if(c[0]>>31) {
c[0] = (c[0]<<1) ^ (c[1]>>31) ^ 0xc4d6496c;
c[1] = (c[1]<<1) ^ 0x55c61c8d;
} else {
c[0] = (c[0]<<1) ^ (c[1]>>31);
c[1] <<= 1;
}
cns[1] = c[0];
c[0] = c[1];
c[1] = cns[1];

return;
}

3 Risposte

  • Re: Problema con if in Luffa

    Tu sai cosa significa

    c[0]>>31

    ??

    P.S. Che è Luffa?
  • Re: Problema con if in Luffa

    Significa che devo fare uno shift a destra di 31 bit.
    Luffa è una hash function
  • Re: Problema con if in Luffa

    MatthewV90 ha scritto:


    Significa che devo fare uno shift a destra di 31 bit.
    ... di un valore a 32 bit, il risultato sarà 0 oppure 1 (diverso da 0).

    0 viene inteso come falso, gli altri valori come vero.

    Quindi, se dopo lo shift il risultato è diverso da 0, allora esegue la if, altrimenti esegue la else
Devi accedere o registrarti per scrivere nel forum
3 risposte