了解 &按位与、|按位或、^按位异或、~按位取反、按位左移、按位右移 的区别

5 篇文章 0 订阅

《了解 &按位与、|按位或、^按位异或、~按位取反、<<按位左移、>>按位右移 的区别》


总结:都是用于二进制运算,在程序中则是将十进制数转换成二进制数后再进行运算,得出二进制结果再转换成十进制数。


【&  按位与(And)】

  • 二进制:遇0为0、全1为1;
  • 如:十进制 (0 & 0 = 0) = 二进制 (0000 And 0000 = 0000)
  • 如:十进制 (1 & 0 = 0) = 二进制 (0001 And 0000 = 0000)
  • 如:十进制 (1 & 1 = 1) = 二进制 (0001 And 0001 = 0001)
  • 如:十进制 (1 & 2 = 0) = 二进制 (0001 And 0010 = 0000)
  • 如:十进制 (1 & 3 = 1) = 二进制 (0001 And 0011 = 0001)
  • 在C#中还可用于枚举类型判断;
  1. 注意:需为枚举成员定义1/2/4/8/16/32/...类型的值,也就是二进制1/10/100/1000/...否则会出现计算错误;
  2. 效果:左边的集合中存在右边指定的成员时、就返回右边的成员,反之则返回值为0的成员或0; 

【|  按位或(Or)】

  • 二进制:遇1为1、全0为0;
  • 如:十进制 (0 | 0 = 0) = 二进制 (0000 Or 0000 = 0000)
  • 如:十进制 (1 | 0 = 1) = 二进制 (0001 Or 0000 = 0001)
  • 如:十进制 (1 | 1 = 1) = 二进制 (0001 Or 0001 = 0001)
  • 如:十进制 (1 | 2 = 3) = 二进制 (0001 Or 0010 = 0011)
  • 如:十进制 (1 | 3 = 3) = 二进制 (0001 Or 0011 = 0011)
  • 在C#中还可用在枚举类型中做加法;

【^  按位异或(Xor)】

  • 二进制:相同为0、相异为1;
  • 如:十进制 (0 ^ 0 = 0) = 二进制 (0000 Xor 0000 = 0000)
  • 如:十进制 (1 ^ 0 = 1) = 二进制 (0001 Xor 0000 = 0001) 
  • 如:十进制 (1 ^ 1 = 0) = 二进制 (0001 Xor 0001 = 0000) 
  • 如:十进制 (1 ^ 2 = 3) = 二进制 (0001 Xor 0010 = 0011) 
  • 如:十进制 (1 ^ 3 = 2) = 二进制 (0001 Xor 0011 = 0010) 

【~  按位取反(Not)】

  • 二进制:遇0为1、遇1为0;
  • 如:十进制 (~0 = -1) = 二进制 (Not 0000 = ...1111)
  • 如:十进制 (~1 = -2) = 二进制 (Not 0001 = ...1110) 
  • 如:十进制 (~2 = -3) = 二进制 (Not 0010 = ...1101) 
  • 如:十进制 (~3 = -4) = 二进制 (Not 0011 = ...1100) 

【<< 按位左移(Lsh)】

  • 二进制左移n位,或在右边加n个0
  • 如:(8 << 1) = (1000左移1位则变成1 0000) = (16)

【>> 按位右移(Rsh) 】

  • 二进制右移n位,或删除右边n位
  • 如:(8 >> 1) = (1000右移1位则变成0100) = (4)

  • && 是逻辑与,也就是做条件判断时用的 And;
  • ||    是逻辑或,也就是做条件判断时用的 Or;
  • !     是逻辑取反,用于程序中的 bool 类型取反值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值