说下按位异或(^)和按位与(&)的一点知识(没技术含量的)

先看下面这段代码和结果

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 双目运算符
{
    
class Program
    {
        
static void Main(string[] args)
        {
            Console.WriteLine(
"按位异或\"^\",结果是:{0}"100 ^ 5);
            Console.WriteLine(
"按位异或\"^\",结果是:{0}"5 ^ 5);
            Console.WriteLine(
"按位与\"&\",结果是:{0}"100 & 5);
            Console.WriteLine(
"按位与\"&\",结果是:{0}"5 & 5);
            Console.ReadKey();
        }
    }
}

 

 结果是:

 

好了,现在看下MSDN是怎么说的。

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

 & 运算符(C# 参考)

一元 & 运算符返回操作数的地址(要求 unsafe 上下文)。

为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true 

 

 

代码
            Console.WriteLine("按位异或\"^\",结果是:{0}"100 ^ 5);
            
/*
             100的二进制是:01100100
               5的二进制是:00000101
                 异或后得:01100001  异或(可以理解为:不一样为1,一样为0)
                  转换为十进制就是:97
             
*/
            Console.WriteLine(
"按位异或\"^\",结果是:{0}"5 ^ 5);//两个相同就是0


            Console.WriteLine(
"按位与\"&\",结果是:{0}"100 & 5);
            
/*
             100的二进制是:01100100
               5的二进制是:00000101
                按位与后得:00000100  按位与(只同时为1时才为1)
                  转换为十进制就是:4
             
*/
            Console.WriteLine(
"按位与\"&\",结果是:{0}"5 & 5);//为自己 

呵呵,更多请自己看MSDN,很详细。 

 

 

posted @ 2009-12-24 23:03  BePast  阅读(510)  评论(0编辑  收藏  举报