【问题标题】:Visual basic: Variable assignment with ORVisual basic:使用 OR 进行变量赋值
【发布时间】:2013-04-17 20:47:32
【问题描述】:

我不明白 OR 语句在此代码示例中的作用。

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

DE.Properties("UserAccountControl").Value 表示小数。

枚举是整数。

我知道这是用于停用 Active Directory 中的用户的代码,但我不明白“OR”在此处的工作原理。

谢谢

【问题讨论】:

    标签: .net vb.net active-directory bit-manipulation bit


    【解决方案1】:

    or 是按位运算。 C = A or B 确保在 C 中设置的所有位都设置在 A 中 在 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
    

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多