C#位运算以及实例计算详解

作者:艾三元 时间:2021-06-03 09:03:20 

前言:

平时在实际工作中很少用到这个,虽然都是一些比较基础的东西,但一旦遇到了,又不知所云。刚好最近接触了一些相关这方面的项目,所以也算是对 这些内容重新温习实践了一遍。所以这篇不仅作为个人备忘,也分享给各位重温一遍。

要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作。

了解:

在C#中可以对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位

运算符号

意义

运算对象类型

运算结果类型

对象数

实例

~

位逻辑非运算

整型,字符型

整型

1

~a

&

位逻辑与运算

2

a & b

|

位逻辑或运算

2

a | b

^

位逻辑异或运算

2

a ^ b

<< 

位左移运算

2

a<<4

>> 

位右移运算

2

a>>2

开始:

一、位逻辑非运算

位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算。符号为:~

即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0

对二进制的10010001进行位逻辑非运算,结果等于01101110

用十进制:~145等于110

二、位逻辑与运算

位逻辑与运算将两个运算对象按位进行与运算。符号为&。

运算规则为:1&1=1;0&1=0;0&0=0


#region 位运算与运算
  int a = 11; //11的二进制是0000 1011
  int b = 13; //13的二进制是0000 1101
  Console.WriteLine(a & b); //11 & 13的结果就是0000 1001 即结果是9
  Console.Read();

#endregion

C#位运算以及实例计算详解

三、位逻辑或运算

位逻辑或运算将两个运算对象按位进行或运算。符号为 |

运算规则为:1|1=1;1|0=1;0|0=0


     #region 位运算或运算
     int a = 11; //11的二进制是0000 1011
     int b = 13; //13的二进制是0000 1101
     Console.WriteLine(a | b); //11 | 13的结果就是0000 1111 即结果是15
     Console.Read();
     #endregion

C#位运算以及实例计算详解

四、位逻辑异或运算

位逻辑异或运算将两个运算对象按位进行异或运算。符号为^

运算规则:1^1=0;1^0=1;0^0=0 (相同得0,相异得1)


     #region 位运算异或运算
     int a = 11; //11的二进制是0000 1011
     int b = 13; //13的二进制是0000 1101
     Console.WriteLine(a ^ b); //11 ^ 13的结果就是0000 0110 即结果是6
     Console.Read();
     #endregion

C#位运算以及实例计算详解

五、位左移运算

位左移运算将整个数按位左移若干位,左移后空出的部分0。符号为:<<

运算规则:a<<1 =a乘以2的1次方;a<<2 =a乘以2的2次方;a<<3 =a乘以2的3次方


     #region 位左移运算
     int a = 11; //11的二进制是0000 1011
     Console.WriteLine(a << 2); //0000 1011 左位移2位的结果就是0010 1100 即结果是44 (11*2^2=44)
     Console.Read();
     #endregion

C#位运算以及实例计算详解

六、位右移运算

位右移运算将整个数按位右移若干位,右移后空出的部分填0。符号为:>>

运算规则:a>>1 = a整除2的1次方;a>>2 = a整除2的2次方;a>>3 = a整除2的3次方


     #region 位右移运算
     int a = 11; //11的二进制是0000 1011
     Console.WriteLine(a >> 2); //0000 1011 右位移2位的结果就是0000 0010 即结果是2 (11÷(2^2)=2)
     Console.Read();
     #endregion

C#位运算以及实例计算详解

总结:

1.位运算,虽然平时很少用到位运算符,但是在某些时候,这些确实能够给我们提供很好的解决方案。

2.在实际应用中,不断的重温基础的知识,加强巩固。毕竟很多时候,只有将基础的知识打牢固,后续才能更好的功能拓展和衍生

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

来源:https://www.cnblogs.com/i3yuan/p/11141016.html

标签:c#,位运算
0
投稿

猜你喜欢

  • 关于C#操作文件路径(Directory)的常用静态方法详解

    2023-06-06 10:40:12
  • 项目为什么引入log4j而不是logback代码

    2023-02-02 07:51:07
  • Java-String类最全汇总(下篇)

    2023-11-09 14:45:26
  • java两个integer数据判断相等用==还是equals

    2021-06-14 00:46:52
  • Java的Spring框架下的AOP编程模式示例

    2023-11-02 00:52:25
  • Java应用EasyExcel工具类

    2023-07-07 18:45:32
  • Spring Cloud Config配置文件使用对称加密的方法

    2021-08-09 08:50:02
  • Springboot+Netty+Websocket实现消息推送实例

    2022-03-24 09:29:29
  • 详解Java编程中protected修饰符与static修饰符的作用

    2022-05-11 03:53:17
  • 一文带你弄懂Java中线程池的原理

    2023-09-10 20:59:02
  • Java Set集合的遍历及实现类的比较

    2023-11-05 16:08:10
  • 通过面试题解析 Java 类加载机制

    2022-08-13 12:49:16
  • Java stream sorted使用 Comparator 进行多字段排序的方法

    2022-07-26 05:02:13
  • android APP登陆页面适配的实现

    2022-08-27 17:55:57
  • Java Springboot如何基于图片生成下载链接

    2023-05-19 19:57:32
  • Mybatis-plus多租户项目实战进阶指南

    2023-10-10 18:14:43
  • 了解Java线程池创建过程

    2022-09-29 20:45:49
  • SpringBoot如何读取xml配置bean(@ImportResource)

    2021-08-03 22:33:44
  • java获取注册ip实例

    2023-11-03 23:01:12
  • C#中调用命令行cmd开启wifi热点的实例代码

    2023-11-28 03:15:04
  • asp之家 软件编程 m.aspxhome.com