iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#位运算符的基本用法介绍
  • 385
分享到

C#位运算符的基本用法介绍

2024-04-02 19:04:59 385人浏览 安东尼
摘要

位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right

位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。本篇体验位运算符在C#中的应用。

进制转换

因为位运算是在二进制基础上进行的,所以进制转换是位运算的前提。

十进制转换成二进制

比如,把10进制的数783转换成二进制,经过下面10个步骤。

把余数从下到上拼接起来,就是783的二进制,即1100001111。

在C#中,如果是Int16类型,意味着有16位整型数。对于783来说,如果表示成Int16类型,不足16位的话,要在前面补0,即要在1100001111补6个0,完整的表示是:0000001100001111。同样的道理,如果是Int32类型,意味着有32位整型数。

如何把-783转换成Int16类型的二进制呢?

→我们知道正数783表示成Int16类型的二进制是:0000001100001111
→在每个位置上倒转,即如果是1就变成0,反之亦然,倒转后变成:1111110011110000
→再加上1,变成:1111110011110001

二进制转换成十进制

比如,把Int16类型的二进制数0000000100010110转换成十进制,经过下面的16个步骤。

从右向左,依次乘以2的n次方。

把所有的结果加起来:
0 + 2 + 4 + 0 + 16 + 0 + 0 + 0 + 256 + 0 = 2 + 4 + 16 + 256 = 278
所以,0000000100010110的十进制数是278。

如何把一个Int16类型的负二进制数转换成十进制呢?

比如有这样的一个二进制数:1111111111010011(Int16类型,第一位是数字1表示负数,第一位是数字0表示正数)
→每个位置上反转变成:0000000000101100
→进过计算,得到的十进制数是:44
→再加1,得到:45
→再变成负数,得到:-45

| 按位或操作符

假设,十进制数38和53进行按位或计算。
→经过计算,十进制数38的二进制表达是00100110,十进制数538的二进制表达是00110101。
→对| 按位或操作符来说,只要对应的二个二进位有一个为1时,结果就为1。

→把得到的00110111转换成十进制就是:55

如果用C#表示就是:

byte result = 38 | 53;

& 按位与操作符

假设,十进制数76和231进行按位与计算。
→经过计算,十进制数76的二进制表达是01001100,十进制数231的二进制表达是11100111。
→对& 按位与操作符来说,只要对应的二个二进位有一个为0时,结果就为0。

→把得到的 01000100转换成十进制就是:68

如果用C#表示就是:

byte result = 76 & 231;

^ 按位异或操作符

假设,十进制数138和43进行按位与计算。
→经过计算,十进制数138的二进制表达是10001010,十进制数43的二进制表达是00101011。
→对^ 按位异或操作符来说,当两对应的二进位相异时,结果为1。

→把得到的10100001转换成十进制就是:161

如果用C#表示就是:

byte result = 138 ^ 43 ;

例子1:使用^ 按位异或交换2个数

int x = 4; 
int y = 6;
x ^= y;
y ^= x;
x ^= y;
Console.WriteLine(x); //6
Console.WriteLine(y); //4

以上过程是这样的:

(1)x ^= y,相当于x = x ^ y

x的二进制是:00100
y的二进制是:00110
x和y进行异或,结果是:00010
x转换成十进制后,x为:2

(2)y ^= x,相当于y = y ^ x

y的二进制是:00110
x的二进制是:00010
y和x进行异或,结果是:00100
y转换成十进制后,y为:4

(3)x ^= y,相当于x = x ^ y

x的二进制是:00010
y的二进制是:00100
x和y进行异或,结果是:00110
x转换成十进制后,x为:6

例子2:使用^按位异或进行加密运算

string msg = "这是我要加密的string字符串";
string k = "mypassWord";
for(int i = 0; i < msg.Length; i++)
{
    sb.Append((char)(msg[i] ^ k[i % k.Length]));
}
Console.WriteLine(sb.ToString());

~ 取反操作符

假设,十进制数52进行取反计算。
→经过计算,十进制数52的二进制表达是00110100
→对~ 取反操作符来说,对应的二进位数按位求反,0变成1,1变成0

→把得到的11001011转换成十进制就是:203

如果用C#表示就是:

byte result = ~52;

x << n 左移运算符

每位向左移动n位,右边空缺的位置补0。
假设,十进制数154进行左移。

如果用C#表示就是:

byte b1 = 154;
byte b2 = (byte)b1 << 1;
Console.Writeline(b2);//结果是52,二进制是00110100

x >> n 右移运算符

每位向右移动n位,左边空缺的位置补0。
假设,十进制数155进行右移。

如果用C#表示就是:

byte b1 = 155;
byte b2 = (byte)(b1 >> 1);
Console.WriteLine(b2); // 结果: 77

总结
| 按位或操作符来说,只要对应的二个二进位有一个为1时,结果就为1
& 按位与操作符来说,只要对应的二个二进位有一个为0时,结果就为0
^ 按位异或操作符来说,当两对应的二进位相异时,结果为1
~ 取反操作符来说,对应的二进位数按位求反,0变成1,1变成0
x << n 左移运算符,每位向左移动n位,右边空缺的位置补0
x >> n 右移运算符,每位向右移动n位,左边空缺的位置补0

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对编程网的支持。如果你想了解更多相关内容请查看下面相关链接

--结束END--

本文标题: C#位运算符的基本用法介绍

本文链接: https://www.lsjlt.com/news/166139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#位运算符的基本用法介绍
    位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right ...
    99+
    2024-04-02
  • C#运算符的优先级介绍
    这篇文章主要讲解了“C#运算符的优先级介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#运算符的优先级介绍”吧!C#提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许...
    99+
    2023-06-18
  • C#运算符重载的实例介绍
    本篇内容介绍了“C#运算符重载的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#运算符重载实例是掌握C#运算符重载的有效方法,那么...
    99+
    2023-06-18
  • C++运算符重载详情介绍
    文章转自公众号:Coder梁(ID:Coder_LT) C++当中除了函数可以重载之外,其实运算符也是可以重载的。我们之前已经接触过一些,可能大家没有意识到。 举个例子,乘号*,运用...
    99+
    2024-04-02
  • C++运算符重载限制介绍
    目录一、重载限制1.必须至少有一个操作数是用户定义的类型2.不能违反运算符原来的规则3.不能创建新运算符4.禁止名单5.部分运算符只能通过成员函数重载 文章转自公众号:Co...
    99+
    2024-04-02
  • Python中的比较运算符用法介绍
    这篇文章主要介绍“Python中的比较运算符用法介绍”,在日常操作中,相信很多人在Python中的比较运算符用法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的比较运算符用法介绍”的疑惑有所...
    99+
    2023-06-02
  • VBScript运算符的详细介绍
    这篇文章主要讲解了“VBScript运算符的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBScript运算符的详细介绍”吧!VBScript 运算符VBScript 有一套完整的...
    99+
    2023-06-08
  • Python运算符的使用简单介绍
    目录1、算术运算符2、赋值运算符3、比较运算符4、逻辑运算符5、位运算符6、运算符优先级和结合性1、算术运算符 Python 中常用运算符: 运算符说明实例结果+加22.4 + 15...
    99+
    2024-04-02
  • php运算符的基本使用
    $base = 20; $height = 10; $area = $base * $height; 我用来将base与height相乘的* ,就是乘法运算。 我们有相当多的运算符,让我们对主要的运算符做一个简单的总结。 首先,这里是算术运...
    99+
    2023-10-23
    php 开发语言
  • python中的各种运算符介绍
    目录一、比较运算符二、​赋值运算符​​三、位运算符​四、​逻辑运算符​五、​成员运算符​以Python 3.x版本为主 一、比较运算符 比较运算符主要是True和Fals两个值 编号...
    99+
    2024-04-02
  • C++基本运算符重载怎么使用
    这篇“C++基本运算符重载怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++基本运算符重载怎么使用”文章吧。运算符...
    99+
    2023-07-02
  • C#中的位运算符怎么用
    本文小编为大家详细介绍“C#中的位运算符怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中的位运算符怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实例请看下面的实例,了解 C# 中所有可用的位运算...
    99+
    2023-06-17
  • C++中运算符重载详解及其作用介绍
    目录概述函数重载运算符重载C++ 的运算符重载运算符的规则成员函数实现 Complex 加法运算符重载的方法多种实现方法实现 operator+=三种运算符重载函数成员函数实现友元函...
    99+
    2024-04-02
  • C++简单又好用的基本运算符重载
    目录运算符重载概念加号运算符重载成员函数实现全局函数实现运算符实现函数重载总结运算符重载概念 对已有的运算符进行重新定义,赋予其另外一种功能,以适应不同的数据类型 我们知道已有的运算...
    99+
    2024-04-02
  • VBS中运算符优先级的介绍
    本篇内容主要讲解“VBS中运算符优先级的介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS中运算符优先级的介绍”吧!运算符优先级在一个表达式中进行多个运算时,每一部分都会按预先确定的顺序进...
    99+
    2023-06-08
  • php运算符运用之怎么使用基本赋值运算符
    这篇文章主要介绍了php运算符运用之怎么使用基本赋值运算符,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php中基本的赋值运算符是“=”。他的优先级别低于其他的运算符,所以对...
    99+
    2023-06-20
  • Dockerfile的基本语法介绍
    这篇文章主要讲解了“Dockerfile的基本语法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dockerfile的基本语法介绍”吧!Dockerfile的组成Dockerfile分为...
    99+
    2023-06-04
  • C语言中的基本算术运算符有哪些
    这篇文章主要介绍“C语言中的基本算术运算符有哪些”,在日常操作中,相信很多人在C语言中的基本算术运算符有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中的基本算术运算符有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • C#中?、?.、??、??=运算符的用法
    目录1. 可空类型修饰符 ?2. 空合并运算符 3. 非null时继续执行后续代码,运算符 .4. =1. 可空类型修饰符 ? // 引用类型能用空引用来表示一个不存在的值,但是值类...
    99+
    2023-05-15
    C# ? ?. ?? ??=
  • JS中的运算符的优先级介绍
    这篇文章主要介绍“JS中的运算符的优先级介绍”,在日常操作中,相信很多人在JS中的运算符的优先级介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS中的运算符的优先级介绍”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作