이 변환을 수행하기 위해 비트 twiddle
-
03-07-2019 - |
문제
이진 번호로 다음을 수행하는 방법에 대한 통찰력이있는 사람이 있다면 궁금합니다.
전환하다
01+0 -> 10+1 (+ as in regular expressions, one or more)
01 -> 10
10 -> 01
그래서,
10101000010100011100
01010100101010100010
그리고 이것이 간단한 반전이 아니라는 것을 명확히하기 위해 :
000000100000000000
000001010000000000
나는 Regex를 생각하고 있었지만 이진수로 일하고 있으며 그런 식으로 유지하고 싶습니다. 그만큼 비트 twiddling 핵 페이지는 나에게 통찰력을주지 않았습니다. 이것은 분명히 Cellular Automata의 본질이 있습니다. 그렇다면 누구든지 이것을 처리 할 수있는 몇 가지 작업을 가지고 있습니까? (코드가 필요하지 않습니다. 어떻게 해야하는지 알고 있습니다).
해결책
X가 당신의 변수라고 가정 해 봅시다. 그러면 당신은 다음과 같습니다.
unsigned myBitOperation(unsigned x)
{
return ((x<<1) | (x>>1)) & (~x);
}
다른 팁
c/c ++의 twidle은 ~입니다
제휴하지 않습니다 StackOverflow