public static int AddUserRoot(double RootID, int UserOldRoot)
        {
            return UserOldRoot = UserOldRoot | (int)Math.Pow(2, RootID-1);
        }
        //删除用户权限
        public static int DelUserRoot(double RootID, int UserOldRoot)
        {
            int UserNewRoot;
            if (GetUserRoot(RootID, UserOldRoot))
            {
                UserNewRoot = UserOldRoot ^ (int)Math.Pow(2, RootID - 1);
            }
            else
            {
                UserNewRoot = UserOldRoot;
            }
            return UserNewRoot;
        }
        //是否拥有此权限
        public static bool GetUserRoot(double RootID, int UserOldRoot)
        {
            bool Flage = false;
            if ((UserOldRoot & (int)Math.Pow(2, RootID - 1))>0)
            {
                Flage = true;
            }
            return Flage;
        }
我不太清楚 程序里面的(|,&,^)运算符的 各种用处,
希望高手 能够详细的讲解下,
最好 在方法里  调用多个 参数作为事例。

解决方案 »

  1.   

    & 如果两者都为真,那么结果为真(我理解为"and"方式,又称并且方式)
    | 如果两者都为假,那么结果为假(我理解为"or"方式,又称或者方式。这个理解比较别扭,我干脆按是否为真来理解)
     
    PS:"并且方式"和"或者方式"只是我个人根据自己的理解起的代称,并不表示是科学的说法。
     
    &的例子代码:
                            if (1 > 0 & 1 > 2) 
                            { 
                                    Console.WriteLine("真的"); 
                            } 
                            else 
                            { 
                                    Console.WriteLine("假的"); 
                            }
    翻译过来就是:如果1大于0并且1大于2都是真的,那么就是真的。显然1不可能大于2,所以结果是假的。
     
    |的例子代码:                        if (1 > 0 | 1 > 2) 
                            { 
                                    Console.WriteLine("真的"); 
                            } 
                            else 
                            { 
                                    Console.WriteLine("假的"); 
                            }
    翻译过来就是:如果1大于0或者1大于2有一个为真,那么就是真的。这里1大于0是真的,所以结果是真的。
     
      

  2.   

    ^ 运算符
    二元 ^ 运算符是为整型和 bool 类型预定义的。对于整型,^ 将计算操作数的按位“异或”。对于 bool 操作数,^ 将计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,结果才为 true。
      

  3.   

    看看:http://www.cnblogs.com/sohighthesky/archive/2009/11/29/1612988.html
      

  4.   

    在C#中我沒用過。不過應該不是1樓說的and or,and or應該是用&&和||表示的.
    以前在學校學C的時候,&和|是指邏輯運算中的“”和“”.^是指邏輯運算中的異或以二進制舉例
    01&10可理解為第一位的0和1求與,得結果為0,第二位的1和0求結果為0,最後的結果為00
    01|10可理解為第一位的0和1求或,得結果為1,第二位的1和0求結果為1,最終的結果為11
    異或計算需用到補碼,LZ可上網搜搜。
      

  5.   

    看上面的代码& | ^并不是用作逻辑运算,而是数值运算,原理就是讲数值型的数转换成二进制,而后逐位进行比较,&类似乘,只有2个数都为1的时候才得1,其余情况得0,| 则为,只有2个数都得0的时候才得0,其余情况为1,^ 是2个数不同的情况得1,相同得0
      

  6.   

    都可以理解成位运算。
    |  或运算,有1则1
    &  与运算,同1则1
    ^  异或运算  
      

  7.   

    这问题 百度 google 收一下 多着呢
      给LZ 两个连接 参考下吧 挺详细的
    &与&& 详解
    http://topic.csdn.net/t/20030422/14/1693051.htmlC#语言 运算符 基本都在这里面有了
    http://msdn.microsoft.com/zh-cn/library/6a71f45d(VS.80).aspx
      

  8.   

    &的&&区别
    &不论第一个运算结果是真是假,始终计算第二个结果
    && 如果第一个结果是假则返回假,如果第一个结果运算为真才去计算右边的表达式其它两个运算符类似两种运算都有用,
    如果你只要结果不管过程,当计算结果为假时,用&&要快
    如果你要知道运算过程,如想知道用户是否执行过此命令,那么就要用&了