位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
先知道这两个二进制数据的特点: 1=0000 0000 0000 0000 0000 0000 0000 0001
-1=1000 0000 0000 0000 0000 0000 0000 0001
1.最高位(首位)表示正负(0为正,1为负)
2.最低位(末位)表示奇偶(0为偶,1为奇)
一、按位取反(~)
十进制1按位取反后=?
分析:
1. 十进制1转为二进制为:1= 0000 0000 0000 0000 0000 0000 0000 0001
2. 按位取反:把原来的二进制得到一个新的二进制,原来是0的则变为1,1的则变为0。
1按位取反后得到 1111 1111 1111 1111 1111 1111 1111 1110
3.二进制的最高位(首位)表示正负(1为负,0为正),如果是负数,如果是负数,则需要用计算机中的补码来表示。
补码:补码=符号位(最高位)以后按位取反再加1.
补码为 1000 0000 0000 0000 0000 0000 0000 0010
4. 结果为:把补码转为十进制: -2;
~1==-2
十进制-1按位取反后=?
1. -1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001
2. 负数是以其补码的形式储存的
-1在计算机中存的是 1111 1111 1111 1111 1111 1111 1111 1111
3. 按位取反: 0000 0000 0000 0000 0000 0000 0000 0000
4.结果为:转为十进制:0
~-1==0
二、按位与and(&)
按位与and(&): 相同位的两个数字都为1,则为1;若有一个不为1,则为0。
25&3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 0001
25&3==1
三、按位异或(^)
按位异或(^):相同位不同则为1,相同则为0
25^3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1010
25&3==26
四、按位或(|)
按位或(|):相同位只要一个为1即为1。
25|3=> 25= 0000 0000 0000 0000 0000 0000 0001 1001
3= 0000 0000 0000 0000 0000 0000 0000 0011
-------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0001 1011
25|3==27
五、右移(>>)
把1的位置向右移n位,超出的就舍掉
15=0000 0000 0000 0000 0000 0000 0000 1111
15>>1=0000 0000 0000 0000 0000 0000 0000 0111
15>>1=7
:右移1位即除以21;,并且取整。
n>>4==n/(24)
64>>4==4
六、左移(<<)
把1的位置向左移n位,超出的就舍掉
:左移1位即乘以21;,并且取整。
n<<4==n*24
2<<4==32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?