前言:spa
平时在实际工做中不多用到这个,虽然都是一些比较基础的东西,但一旦遇到了,又不知所云。恰好最近接触了一些相关这方面的项目,因此也算是对 这些内容从新温习实践了一遍。因此这篇不只做为我的备忘,也分享给各位重温一遍。code
要学会位运算,首先要清楚什么是位运算?程序中的全部内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操做。对象
了解:blog
在C#中能够对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每一个位,进行逻辑运算,每一个位的逻辑运算结果是结果值的每一个位内存
运算符号
|
意义
|
运算对象类型
|
运算结果类型
|
对象数
|
实例
|
~
|
位逻辑
非运算
|
整型,字符型
|
整型
|
1
|
~a
|
&
|
位逻辑
与运算
|
2
|
a & b
|
||
|
|
位逻辑
或运算
|
2
|
a | b
|
||
^
|
位逻辑
异或运算
|
2
|
a ^ b
|
||
<<
|
位
左移运算
|
2
|
a<<4
|
||
>>
|
位
右移运算
|
2
|
a>>2
|
开始:ci
1、位逻辑非运算it
位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算。符号为:~io
即:若是某一位等于0,就将其转变为1;若是某一位等于1,就将其转变为0table
对二进制的10010001进行位逻辑非运算,结果等于01101110class
用十进制:~145等于110
2、位逻辑与运算
位逻辑与运算将两个运算对象按位进行与运算。符号为&。
运算规则为: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
3、位逻辑或运算
位逻辑或运算将两个运算对象按位进行或运算。符号为 |
运算规则为: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
4、位逻辑异或运算
位逻辑异或运算将两个运算对象按位进行异或运算。符号为^
运算规则: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
5、位左移运算
位左移运算将整个数按位左移若干位,左移后空出的部分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
6、位右移运算
位右移运算将整个数按位右移若干位,右移后空出的部分填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
总结:
1.位运算,虽然平时不多用到位运算符,可是在某些时候,这些确实可以给咱们提供很好的解决方案。
2.在实际应用中,不断的重温基础的知识,增强巩固。毕竟不少时候,只有将基础的知识打牢固,后续才能更好的功能拓展和衍生