位运算符在C#中的运行结果

本文讨论C#中bool类型在位运算符 &(与运算) 和 |(或运算)的结果

&(与运算)在数值中运算的过程是先把 数字 转换成二进制, 同位均为1 则该位为1
|(或运算)在数值中运算的过程是先把 数字 转换成二进制, 同位中有1 则该位为1

            bool bol1 = false, bol2 = false;

            bool Result = bol1 & bol2;
            if (Result == true)
            {
                Debug.WriteLine("False & False = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("False & False = False");
            }

            Result = bol1 | bol2;
            if(Result==true)
            {
                Debug.WriteLine("False | False = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("False | False = False");
            }

            bol1 = false; bol2 = true;

            Result = bol1 & bol2;
            if (Result == true)
            {
                Debug.WriteLine("False & True = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("False & True = False");
            }


            Result = bol1 | bol2;
            if (Result == true)
            {
                Debug.WriteLine("False | True = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("False | True = False");
            }


            bol1 = true; bol2 = false;

            Result = bol1 & bol2;
            if (Result == true)
            {
                Debug.WriteLine("True & False = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("True & False = False");
            }

            Result = bol1 | bol2;
            if (Result == true)
            {
                Debug.WriteLine("True | False = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("True | False = False");
            }


            bol1 = true; bol2 = true;
            Result = bol1 & bol2;
            if (Result == true)
            {
                Debug.WriteLine("True & True = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("True & True = False");
            }

            Result = bol1 | bol2;
            if (Result == true)
            {
                Debug.WriteLine("True | True = True");
            }
            if (Result == false)
            {
                Debug.WriteLine("True | True = False");
            }

VS 中OutPut输出结果

False & False = False
False | False = False
False & True = False
False | True = True
True & False = False
True | False = True
True & True = True
True | True = True

继续探讨,如果不要用变量能够在If中时用吗,代码如下

        bool bol1 = false, bol2 = false;

        if (bol1 & bol2 == true)
        {
            Debug.WriteLine("if(False & False = True)    CondictionExecuted");
        }
        if (bol1 & bol2 == false)
        {
            Debug.WriteLine("if(False & False = False)    CondictionExecuted");
        }

        if (bol1 | bol2 == true)
        {
            Debug.WriteLine("if(False | False = True)      CondictionExecuted");
        }
        if (bol1 | bol2 == false)
        {
            Debug.WriteLine("if(False | False = False)      CondictionExecuted");
        }

        bol1 = false; bol2 = true;
        if (bol1 & bol2 == true)
        {
            Debug.WriteLine("if(False & True = True)        CondictionExecuted");
        }
        if (bol1 & bol2 == false)
        {
            Debug.WriteLine("if(False & True = False)       CondictionExecuted");
        }

        
        if (bol1 | bol2 == true)
        {
            Debug.WriteLine("if(False | True = True)        CondictionExecuted");
        }
        if (bol1 | bol2 == false)
        {
            Debug.WriteLine("if(False | True = False)       CondictionExecuted");
        }


        bol1 = true; bol2 = false;
        if (bol1 & bol2 == true)
        {
            Debug.WriteLine("if(True & False = True)        CondictionExecuted");
        }
        if (bol1 & bol2 == false)
        {
            Debug.WriteLine("if(True & False = False)       CondictionExecuted");
        }


        if (bol1 | bol2 == true)
        {
            Debug.WriteLine("if(True | False = True)        CondictionExecuted");
        }
        if (bol1 | bol2 == false)
        {
            Debug.WriteLine("if(True | False = False)       CondictionExecuted");
        }


        bol1 = true; bol2 = true;
        if (bol1 & bol2 == true)
        {
            Debug.WriteLine("if(True & True = True)         CondictionExecuted");
        }
        if (bol1 & bol2 == false)
        {
            Debug.WriteLine("if(True & True = False)        CondictionExecuted");
        }
        
        if (bol1 | bol2 == true)
        {
            Debug.WriteLine("if(True | True = True)         CondictionExecuted");
        }
        if (bol1 | bol2 == false)
        {
            Debug.WriteLine("if(True | True = False)        CondictionExecuted");
        }

此时VS OutPut窗口输出:多么痛的领悟。。。。。

if(True | False = True) CondictionExecuted
if(True | False = False) CondictionExecuted
if(True | True = True) CondictionExecuted
if(True | True = False) CondictionExecuted

if(False | False = False)      CondictionExecuted
if(False | True = True)        CondictionExecuted
if(True & False = False)       CondictionExecuted
if(True | False = True)        CondictionExecuted
if(True | False = False)       CondictionExecuted
if(True & True = True)         CondictionExecuted
if(True | True = True)         CondictionExecuted
if(True | True = False)        CondictionExecuted

位运算符&和|的运算结果能够给另一个变量, 但是放到if就不行了,所以If要用&&和||

位运算符在C#中的运行结果

上一篇:C# 给PDF签名时添加时间戳的2种方法(附VB.NET代码)


下一篇:golang调用windows动态库dll方法