[C++](超详细) 与、或、异或、取反和左移等运算符解析

前言: 与、或、非运算符在实际中分为:按‘位’和‘逻辑’
按位主要针对二进制,逻辑结果为true 或 false

逻辑运算符

与 &&

表示逻辑与
逻辑与的意思和and的意思一样的。
当运算符两边的表达式的结果都为true时,整个运算结果才为true。
只要有一方为false,则结果为false。
逻辑运算的两个条件可以是除了数字以外的其他语句
12&&8 =1
3&&-1 =1
5&&0 =0

或 ||

表示逻辑或
逻辑或,是逻辑运算符, “逻辑或”相当于“或者”,当两个条件时,其中有任一个条件满足,“逻辑或”的运算结果就为“真”
12||1 =1 12||0 =1 0||0 =0

非 !

! 运算符被称为逻辑非运算符,执行逻辑 NOT 操作。
它可以反转一个操作数的真值或假值。
如果表达式为 true,那么 ! 运算符将返回 false
如果表达式为 false,则返回 true。

二进制中

与(&)

对于所计算的两个数字,按二进制位进行“与”运算。
具体运算规则:
0&0=0;
0&1=0;
1&0=0;
1&1=1;
两位同为“1”时,结果才为“1”,否则结果为0

例如:3&5
即0000 0011
& 0000 0101
= 0000 0001
3&5的值为1。

或(|)

对于所计算的两个数字,按二进制位进行“或”运算。
运算规则:
0|0=0;
0|1=1;
1|0=1;
1|1=1;
参与运算的两个对象只要有一个为1,其值为1。
例如:3|5
0000 0011
| 0000 0101
= 0000 0111
3|5的值为7。

取反(~)

参与运算的数据,按二进制位进行“取反”运算。
运算规则:
~1=0;
~0=1;
对一个二进制数按位取反,即将0变1,1变0。

异或(^)

对于所计算的两个数据,按二进制位进行“异或”运算。
运算规则:
0^0=0;
0^1=1;
1^0=1;
1^1=0;
如果两个相应值不同,结果为1,否则为0。
例如:9^5
00001001
^00000101
=00001100
9^5结果为12
任何数异或 0 得到的值不变:
a^0 = a

右移 (>>)

向右位移,就是把尾数去掉位数,
例如:5 >> 1,5的二进制是:0101,后面去掉 1位变为 0010
0010转化成十进制就是 2。
移位运算包含“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。

逻辑移位:移出去的位丢弃,空缺位用 0 填充。
算术移位:移出去的位丢弃,空缺位用“符号位”来填充,所以一般用在右移运算中。

常用运算:(二进制赋值、取值、左移、右移、求余数、向上取整、向下取整)

1.赋值1 -> 或运算(|)

   例如:40 | (1<<1)  = 42
 
   0010 1000
 
 | 0000 0010 
 
------------------
 
   0010 1010

2.赋值0 -> 与非运算(&~)

例如: 42 & ~(1<<1) = 40
 
0010 1010 & ~0000 0010 
 
 ==0010 1010 
 
& 1111 1110
---------------  
 
  0010 1000

3.取值 -> 与运算(&)

例如:42 & 1<<1 = 2
 
  0010 1010 
 
& 0000 0010 
 
-----------------
 
  0000 0010

4.乘以2 -> 左移一位( << 1)

例如:43 * 2 = 43 << 1 = 86
 
0010 1011 >> 0101 0110 = 86

5.除以2 -> 右移一位( >> 1)

例如:43 / 2 = 43 >> 1
 
0010 1011 >> 0001 0101 = 21

6.除以2求余数 -> 与1( &1)

例如:43 % 2 = 43 & 1 = 1
 
  0010 1011
 
& 0000 0001
 
--------------- 
 
  0000 0001
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值