前言:
平时在实际工作中很少用到这个,虽然都是一些比较基础的东西,但一旦遇到了,又不知所云。刚好最近接触了一些相关这方面的项目,所以也算是对 这些内容重新温习实践了一遍。所以这篇不仅作为个人备忘,也分享给各位重温一遍。
要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即: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
三、位逻辑或运算
位逻辑或运算将两个运算对象按位进行或运算。符号为 |
运算规则为: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
四、位逻辑异或运算
位逻辑异或运算将两个运算对象按位进行异或运算。符号为^
运算规则: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
五、位左移运算
位左移运算将整个数按位左移若干位,左移后空出的部分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
六、位右移运算
位右移运算将整个数按位右移若干位,右移后空出的部分填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.在实际应用中,不断的重温基础的知识,加强巩固。毕竟很多时候,只有将基础的知识打牢固,后续才能更好的功能拓展和衍生
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
本文向大家介绍C语言 位运算详解及示例代码,包括了C语言 位运算详解及示例代码的使用技巧和注意事项,需要的朋友参考一下 所谓位运算,就是对一个比特(Bit)位进行操作。在《二进制思想以及数据的存储》一节中讲到,比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了。 C语言提供了六种位运算符: 运算符 & | ^ ~ << >> 说明 按位与 按位或 按位
本文向大家介绍C语言位运算和sizeof运算符详解,包括了C语言位运算和sizeof运算符详解的使用技巧和注意事项,需要的朋友参考一下 位运算和sizeof运算符 C语言中提供了一些运算符可以直接操作整数的位,称为位运算,因此位运算中的操作数都必须是整型的。位运算的效率是比较高的,而且位运算运用好的话会达到意想不到的效果。位运算主要有6种:与(&),或(|),取反(~),异或(^),左
本文向大家介绍JS 实现计算器详解及实例代码(一),包括了JS 实现计算器详解及实例代码(一)的使用技巧和注意事项,需要的朋友参考一下 Javascript 实现计算器: 系列文章: JS 实现计算器详解及实例代码(一) Javascript 实现计算器时间功能详解及实例(二) 小型JavaScript计算器 自己寻思出的解决方案,比较笨拙的方法,虽然完成了但是还有不少bug,用的方法也不是最有效
主要内容:实例位运算符 Erlang提供四个位运算符。以下是在 Erlang 可用的位运算符。 S.No. 操作符 & 描述 1 band 位 “and”运算符 2 bor 位 “or” 运算符 3 bxor 位 “xor”或异运算符 4 bnot 按位反运算符 以下是这些运算符真值表显示 - p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1
本文向大家介绍C++ 算法之希尔排序详解及实例,包括了C++ 算法之希尔排序详解及实例的使用技巧和注意事项,需要的朋友参考一下 C++ 算法之希尔排序算法详解及实例 希尔排序算法 定义: 希尔排序是插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 算法思想: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随
本文向大家介绍C语言 自增自减运算的区别详解及实例,包括了C语言 自增自减运算的区别详解及实例的使用技巧和注意事项,需要的朋友参考一下 自增自减 ++自增运算符:如a++,++a都等价于a = a + 1; –自减运算符:如a–,–a都等价于 a = a -1; ++a和a++的区别 虽然++a和a++等价的结果一样,但是运算过程不同,a++ 是先使用a的值,然后再对a做加1处理,++a是先对a作