2011-09-21 6 views
-1

4 개의 속성이 있으며 각각의 속성을 활성화 할 수 있습니다. 어떤 것이 활성화되어 있는지 알기 위해 int 값을받습니다. 비트와 연산을 사용하여 1, 2, 4 또는 8을 얻습니다. 각 숫자는 활성화 된 속성에 해당합니다.비트 연산

if((state & 1) == 1) { 
status = 1; 
       } else if ((state & 2) == 2) { 
status = 2; 
       } else if((state & 4) == 4) { 
status = 4; 
       } else if((state & 8) == 8) { 
status = 8; 
       } 

하나의 비트 연산으로 상태를 계산할 수 있는지 궁금한가요? 감사합니다. . 항상 정확히 설정 한 4 개의 비트 중 하나를 가지고

+0

코드의 내용은 무엇입니까? 각 옵션을 처리하기 위해 4 개의 서로 다른 if 문이 있습니다. 한 줄로 응축 할 수있는 방법은 무엇입니까? –

+0

아무 것도하지 않으므로 코드 줄을 사용할 수 없습니다. 보다 현실적인 예제를 제공해야하며, 블록에 무엇이 많이 들어 있는지에 따라 달라집니다. –

+0

어떻게하면 한 줄에 4 개를 넣을지 생각할 수 있습니까? – Stefano

답변

2

state 경우, 다음 코드는 비트의 수를 설정 state가있는 경우

status = state; 

과 동일로, 코드 세트 매우 유용하지 않다 statusstate의 최하위 비트 세트에 연결합니다. 또한 다음을 사용하여이 작업을 수행 할 수 있습니다.

status = state & -state; 
+0

뛰어난 이진 연산. 나는 이것이 단지 @ xtrem06이 원했던 것이라고 생각한다. – Marcelo