二进制运算符
二进制运算符
& 与运算
两者都为1 则为1,否则为0,(乘法运算)
101 & 110=100
| 或运算
两者只要有一个为1,则为1,否则为0
101| 110= 111
~ 非运算
1取0,0取1,包括符号位
~101= 010
~5 (0000 0101)= -6(1111 1010)
^ 异或运算
相等 为0,不等为1,(不进位加法)
101 ^ 110 = 011
5 (101) ^ 6(110) = 3(011)
异或运算满足一下特性:
A^B = C,AC=B,BC= A;
D^D = 0;
<< 有符号左移
1:二进制位整体左移,移出的部分舍弃,低位补0;
2:左移之后的数 = 操作数据*2移动位数
5<<1 = 5x21=10,5<<2=5x22 = 20,5<<3 = 5x23=40
>> 有符号右移
1:二进制位右移,移出的部分舍弃,若为正数,高位补0;若为负数,高位补1
2:右移之后的数 = 操作数据 / 2移动位数
5>>1 = 5/21=2,5>>2=5/22 = 1,5>>3 = 5/23=0
>>>无符号右移
不管正数还是负数,高位都补0,
-
不管是 有符号还是无符号,符号位都是参与移动的,只是最高位的补充方式不一样
-
至于为什么没有无符号左移,因为和有符号左移一样都是低位补0,所以功能是一样的
-
不管是左移还是右移, 实际移动位数=需要移动位数%操作数据类型位数
例如,int 类型 共32位,移动位数为33 ,则实际移动位数 =33%32=1,移动32位等于其本身
long类型共64位,移动位数位65,则实际移动位数=65%64 =1,移动64位等于其本身
- 当移动位数较大时,会都默认为0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!