Advertisement

C#位运算相关知识梳理

阅读量:

位和字节的介绍

①位 b 也叫比特位,是计算机数据最小的单位,用二进制0和1来存储。

②字节 byte,1 byte = 8 b,一个字节=8位

③字符 char,1 char = 2byte=16b,1个字符 =2 个字节 = 16位

④KB,1KB = 1024byte

⑤汉字,1个汉字 = 2 个字节=16位

位运算

一、位逻辑非运算

该运算是针对单一目标设计的,并仅作用于一个运算对象。该操作会逐位地处理每个二进制数字,并执行相应的非运算操作。符号表示为:~

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

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

用十进制:~145等于110

二、位逻辑与运算

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

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

复制代码

三、位逻辑或运算

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

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

复制代码

四、位逻辑异或运算

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

运算规则:11=0;10=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&,若结果为1,则为奇数,反之为偶数。

密码学中使用异或运算具有特性:当对同一数值进行两次异或操作时结果保持不变。这同样可以用于无需担心溢出的情况下实现两数的交换。

全部评论 (0)

还没有任何评论哟~