Question

curieux de savoir si quelqu'un pourrait avoir une idée de la façon dont je procéderais comme suit pour un nombre binaire:

convertir

   01+0 -> 10+1 (+ as in regular expressions, one or more)
    01 -> 10  
    10 -> 01  

oui,

10101000010100011100
01010100101010100010

et pour préciser qu'il ne s'agit pas d'une simple inversion:

000000100000000000
000001010000000000

Je pensais à l'expression régulière, mais je travaille avec des nombres binaires et je veux rester ainsi. La page bidouillers ne m’a donné aucune idée non plus. Cela a clairement une certaine essence des automates cellulaires. Alors, est-ce que quelqu'un a quelques petites opérations qui peuvent s’occuper de ça? (aucun code n'est nécessaire, je sais comment faire cela).

Était-ce utile?

La solution

Disons que x est votre variable. Ensuite, vous auriez:

unsigned myBitOperation(unsigned x)
{
    return ((x<<1) | (x>>1)) & (~x);
}

Autres conseils

Twidle en C / C ++ est ~

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top