C#运算符之与,或,异或及移位运算小结

让我们来详细讲解一下C#中的逻辑运算符、位运算符及移位运算符。

逻辑运算符

与运算符(&&)

与运算符用于连接两个逻辑表达式并在两个表达式均为true时返回true。与运算符可以被用于任何基本的数据类型,例如bool、int等。

int a = 3;
int b = 5;
if (a < b && b % 2 == 1)
{
    Console.WriteLine("a小于b且b是奇数");
}

上面的代码示例中,如果a小于b且b是奇数,那么控制台就会输出"a小于b且b是奇数",否则不做任何输出。

或运算符(||)

或运算符用于连接两个逻辑表达式并在两个表达式有任意一个为true时返回true。或运算符同样也可以用于任何基本的数据类型。

int a = 3;
int b = 5;
if (a == 3 || b == 4)
{
    Console.WriteLine("a等于3或b等于4");
}

上述代码示例中,如果a等于3或b等于4,那么控制台就会输出"a等于3或b等于4",否则不做任何输出。

异或运算符(^)

异或运算符用于连接两个逻辑表达式并在两个表达式仅当一个为true时返回true。异或运算符也可以用于任何基本的数据类型,例如bool、int等。

int a = 3;
int b = 5;
if (a == 3 ^ b == 3)
{
    Console.WriteLine("a等于3且b不等于3,或者a不等于3且b等于3");
}

上述代码示例中,如果a等于3且b不等于3,或者a不等于3且b等于3,那么控制台会输出"a等于3且b不等于3,或者a不等于3且b等于3",否则不做任何输出。

位运算符

按位与运算符(&)

按位与运算符用于连接两个整数并在它们的二进制表示的对应位都为1时返回1。按位与运算符可以用于任何整数类型。

int a = 5;       //二进制:0101
int b = 3;       //二进制:0011
int result = a & b; //二进制:0001

在上面的代码示例中,按位与运算符将a和b的二进制表示对应位进行与运算,结果为1的只有a和b的二进制表示的最右位,所以结果为1。

按位或运算符(|)

按位或运算符用于连接两个整数并在它们的二进制表示的对应位的任意一位为1时返回1。按位或运算符也可以用于任何整数类型。

int a = 5;       //二进制:0101
int b = 3;       //二进制:0011
int result = a | b; //二进制:0111

在上面的代码示例中,按位或运算符将a和b的二进制表示对应位进行或运算,结果为1的位有a、b的二进制表示的最右位以及最左位,所以结果为0111。

按位异或运算符(^)

按位异或运算符用于连接两个整数并在它们的二进制表示的对应位的任意一位为1而另一位为0时返回1。按位异或运算符也可以用于任何整数类型。

int a = 5;       //二进制:0101
int b = 3;       //二进制:0011
int result = a ^ b; //二进制:0110

在上面的代码示例中,按位异或运算符将a和b的二进制表示对应位进行异或运算,结果为1的位有a、b的二进制表示的第2位和第3位,所以结果为0110。

左移位运算符(<<)

左移位运算符将二进制数向左移动指定的位数。左移位运算符对整数进行操作。

int a = 5;       //二进制:0101
int result = a << 1; //二进制:1010

在上述代码示例中,a的二进制表示向左位移了一位,所以最终的结果是1010。

右移位运算符(>>)

右移位运算符将二进制数向右移动指定的位数。右移位运算符同样对整数进行操作。

int a = 5;       //二进制:0101
int result = a >> 1; //二进制:0010

在上述代码示例中,a的二进制表示向右位移了一位,所以最终的结果是0010。

希望上述代码示例能够对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#运算符之与,或,异或及移位运算小结 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 关于C#连接FTP时路径问题的解决方法

    下面是关于C#连接FTP时路径问题的解决方法的完整攻略。 1. 确定FTP服务器根目录 在连接FTP时,首先需要确定FTP服务器的根目录。通常来说,FTP服务器的根目录可能与本地文件系统的根目录不同,因此需要确保路径的正确性。 假设FTP服务器的根目录为/,则需要使用类似于以下的代码来连接FTP服务器: FtpWebRequest request = (Ft…

    C# 2023年5月15日
    00
  • ASP.NET 跨页面传值方法

    ASP.NET 跨页面传值通常有以下几种方式: 1. QueryString传值 QueryString 是一种将数据以键值对的方式传递到下一个页面的方式。我们通常将值附加到页面 URL 的末尾,并将它们作为该页的参数传递。例如,我们有两个页面 Page1.aspx 和 Page2.aspx,我们可以通过向 Page2.aspx 的 URL 添加参数,来将 …

    C# 2023年6月3日
    00
  • C# 模式匹配完全指南

    C# 模式匹配完全指南 什么是 C# 模式匹配? C# 7.0 开始加入了一种新的特性,那就是模式匹配(Pattern Matching)。模式匹配的主要作用是用来匹配各种数据类型,从而简化我们的程序设计,并且让代码更加简洁易懂。 C# 模式匹配的类型 常量模式(Constant Patterns) 次类型模式(Type Patterns) 变量模式(Var…

    C# 2023年5月15日
    00
  • C#中的out参数、ref参数和params可变参数用法介绍

    接下来我会详细讲解“C#中的out参数、ref参数和params可变参数用法介绍”的完整攻略。 out参数 概述 在C#中,使用out参数可以让方法返回多个值。out参数是通过将变量传递给方法来进行的,并且该方法需要在其内部设置该变量的值。在声明方法时,需要在参数前面加上关键字out,这告诉编译器参数是out参数。 语法 void M(out int x) …

    C# 2023年6月7日
    00
  • .NetCore基础之读取配置文件详解

    .NET Core基础之读取配置文件详解 在.NET Core应用程序中,我们可以使用配置文件来存储应用程序的配置信息。本攻略将详细介绍如何读取配置文件,并提供两个示例说明。 配置文件格式 在.NET Core应用程序中,我们可以使用多种格式的配置文件,包括JSON、XML、INI等。以下是一个简单的JSON格式的配置文件示例: { "Loggin…

    C# 2023年5月17日
    00
  • 开源.NetCore通用工具库Xmtool使用连载 – 散列算法篇

    【Github源码】 《上一篇》详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库。 散列算法在某些特殊场景也可以当做加密方法使用;其特点是不可逆,同一内容每次散列值绝对一致,所以也可用作对数据内容是否被篡改的校验方法;或者其他需要唯一性编码的场景;本类库提供了MD5、SHA1、SHA256、SHA384、SHA512等常用…

    C# 2023年5月9日
    00
  • C# 设计模式系列教程-命令模式

    C# 设计模式系列教程-命令模式 什么是命令模式 命令模式是一种行为设计模式,它能把请求或操作封装起来,以便在不同上下文中进行参数化、延迟执行或支持撤销操作。命令模式把命令的发送者和接收者解耦,并且把命令操作封装成对象,这些对象可以用队列进行管理。 在命令模式中,任何对象都可以扮演“命令”的角色,唯一的要求是具备两项能力: 执行这个请求的操作。 把请求的接收…

    C# 2023年5月31日
    00
  • C#备忘录模式(Memento Pattern)实例教程

    C#备忘录模式(Memento Pattern)实例教程 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许将一个对象的内部状态保存到一个外部的备忘录对象中,从而可以在需要时将对象恢复到先前的状态。在本篇教程中,我们将介绍C#中备忘录模式的使用方法和实现步骤,并提供两个示例说明。 示例一:备忘录模式的基本使用 步骤一:创建备忘录类 首先…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部