关于位运算
<<
:左移运算符,向左移若干位,高位丢弃,低位补零。x << 1
,相当于 x 乘以 2(不溢出的情况下)。
>>
:带符号右移,向右移若干位,高位补符号位,低位丢弃。正数高位补 0,负数高位补 1。x >> 1
,相当于 x 除以 2。
>>>
:无符号右移,忽略符号位,空位都以 0 补齐。
注意点:
1. 注意遇见负数的时候,一般是针对其补码进行运算,得出结果的时候需要先计算出其对应的原码,然后才能得到结果。
补码 -> 原码 转换(原码 -> 补码 一样):
- 如果符号位为0,原码 == 补码。
- 如果符号位为1:
- 符号位以外的位全部取反(反码);
- 加1。
举个例子,-10的原码为: 10000000000000000000000000001010,其反码为11111111111111111111111111110101,其补码为11111111111111111111111111110110。
2. 位移的位置会做模运算,假设是int类型的,则10 >> 33 等同于 10 >> (33 % 32),因为int的比特位数是32。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)