Bit Twiddle pour effectuer cette conversion
-
03-07-2019 - |
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).
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