2013-04-17 2 views
4

이 코드 샘플에서 OR 문이하는 일을 이해할 수 없습니다.Visual Basic : OR을 통한 변수 지정

DE.Properties("UserAccountControl").Value = CInt(DE.Properties("UserAccountControl").Value) Or AccountOptionsEnum.UF_ACCOUNTDISABLE 

DE.Properties ("UserAccountControl"). 값은 십진수를 나타냅니다.

열거 형은 정수입니다.

이 코드는 Active Directory에서 사용자를 비활성화하는 데 사용되지만 "OR"의 작동 방식을 이해하지 못합니다.

감사

답변

5

or는 비트 연산이다. C = A or B는 C의 모든 비트가 설정되도록하는 B.의 또는 설정된다

예 :

01001001 
or 00011000 
    -------- 
    01011001 

AccountOptionsEnum.UF_ACCOUNTDISABLE는 아마도 단일 비트를 의미 형태 2^x 값이며 설정됩니다.

00001000 = UF_ACCOUNTDISABLE 

X = X or UF_ACCOUNTDISABLE가 이전에 설정되어있는 경우이 네 번째 비트가 X에서 설정되어 있는지 확인합니다 작업, 아무것도 변경되지 않습니다 :

00011100 old X 
or 00001000 UF_ACCOUNTDISABLE 
    -------- 
    00011100 new X 

만약의 그것이 오른쪽에서 네 번째 비트가 있다고 가정하자 이 설정되어 있지 않은, 그것은 설정됩니다 : 기본적으로

00010100 old X 
or 00001000 UF_ACCOUNTDISABLE 
    -------- 
    00011100 new X 

, 다음과 같은 비트 오 연회가 일반적으로 사용됩니다 :

X = X or FLAG   ' sets FLAG in X 
X = X and not FLAG ' removes FLAG from X 
X = X xor FLAG  ' toggles FLAG in X 
if (X and FLAG) <> 0 ' checks if FLAG is set in X 
+0

이 명확하고 완벽한 답변 주셔서 감사합니다! 건배! – rousseauo