2012-05-02 3 views
0

여기서 간단한 것은 aValue와 bValue의 원래 값을 i에서 찾을 수 있습니까? 만약 그렇다면 어떻게?리버스 비트 연산

감사합니다.

uint i = Convert.ToUInt32((aValue << 2) & 0x300) | bValue; 
+0

아니요, 불가능합니다. –

+0

아, 간단합니다 : 아니오. – SimpleVar

+0

물론, 일반적으로 없습니다. 하지만 'aValue'와 'bValue'(어떤 유형입니까?)가 특정 범위에 있다는 것을 알고 있다면 값을 복구 할 수 있습니다. –

답변

1

은 여러 쌍의 동일한 결과를 얻을 수 있기 때문에, i에서 에게 값의 쌍을 발견 할 수 없다.

bValue의 모든 비트가 설정된 예제를 고려하면 쉽게 볼 수 있습니다. 그런 다음 값에 관계없이 i의 모든 비트가 설정됩니다. 이제 aValue의 모든 홀수 비트가 설정되고 bValue의 모든 짝수 비트가 설정되고 bValue의 최하위 비트가 설정되는 상황을 고려하십시오. 다시 한 번 결과는 aValuebValue의 매우 다른 쌍에 대해 모든 비트가 설정됩니다.

aValue=00110011, bValue=11111111 ---> i=11111111 
aValue=10110000, bValue=11111111 ---> i=11111111 
aValue=00000000, bValue=11111111 ---> i=11111111 
aValue=01010101, bValue=10101011 ---> i=11111111 
0

많은 값으로 동일한 결과가 발생할 수 있습니다.

값이 있더라도 조작 중에 정보가 손실되어 되돌릴 수 없으므로 항상 다른 값을 확신 할 수 없습니다.