以下数字都使用byte(1字节,8b)示例
&(与)
&可以给两位数字进行与运算
例如:3 & 4 = 0
3:0000 0011
4:0000 0100
-------------
0000 0000
也就是说,&运算,会将两个数的二进制每一位来进行比较
如果都是1,那么就是1,否则都是0
|(或)
|和&的原理是相反的
例如:3 | 4 = 7
3:0000 0011
4:0000 0100
-------------
0000 0111
如果二进制的数都是1或者有一个为1,那么就是1
否则为0
~(非)
~运算是单独一个数
例如:~3
0000 0011
----------
1111 1100
0变成1,1变成0
^(异或)
例如:3 ^ 4 = 7
3:0000 0011
4:0000 0100
-------------
都是0的话就是0,都是1也是0,0和1是1
位运算 << 和 >>
<<
左位移就是将一个数的二进制位向左移动n位
例如:3 << 2 = 12
3:0000 0011
将两个1向左移动两位,移动的位置并补上0
得到 0000 1100
>>
右位移,就是将一个数的二进制位向右移动n位
例如:3 >> 2 = 0
3:0000 0011
将1右移动两位,就小于了最小位,所以补上0就是
0000 0000
求整数N的二进制第k位是?
有一个数N,想要知道它的二进制数第k位是多少
可以 公式: N >> k & 1
例如:
25:0001 1001
求第5位是多少,k==4,k从0开始
25 >> 4 & 1 = 1,就是1了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通