C++运算符
1、按位取反运算符 " ~ "
~1 = -2
~00000001(补码) = 11111110(补码) —— 按位取反
11111110(补码) = 11111101(反码) —— -1
11111101(反码)= 10000010(机器码) —— 除去符号位,按位取反
10000010(机器码)= -2
2、左移运算符 " << "
补码按位左移,右侧补0
-1<<2 = -4
10000001(机器码) = 11111111(补码)
11111111<<2 = 11111100(补码)
11111100(补码)= 11111011(反码)
11111011(反码)= 10000100(机器码)
3、右移运算符 " >> "
补码按位右移,正数左侧补0,负数左侧补1
-1>>2 = -1
10000001 (机器码) = 11111111(补码)
11111111(补码)>> 2 = 11111111(补码)
11111111(补码) = 11111110(反码)
11111110(反码) = 10000001(机器码)
10000001(机器码)= -1
注:机器码、反码和补码转换
正数的机器码、反码和补码都是机器码本身;
负数的机器码、反码和补码之间的转换:
机器码 (按位取反)--> 反码 (+1)--> 补码
补码(-1)--> 反码(按位取反) --> 机器码
4、运算符优先级
运算符优先级为从右到左的运算符有:
(1)一元运算符:+ - ! ~ ++ - - (type)* & sizeof
(2)条件运算符:?:
(3)赋值运算符:= += -= *= /= %=>>= <<= &= ^= |=
运算符优先级为从左到右的运算符有:
(1)逗号运算符:,
逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)