Java 位运算
执行结果截图:
代码:
public class BitwiseAndShiftOperators {
public static void main(String[] args) {
// 位运算,不要轻易使用位运算,很容易出错
// 十进制的60用二进制表示为0011 1100, 即32+16+8+4=60
int A = 60;
// 十进制的12用二进制表示为0000 1101,即 8+4+com.cnblogs.www.1=13
int B = 13;
// A&B会将两者的二进制按位进行与比较,与的结果是二进制的 0000 1100, 即十进制的12
System.out.println(A & B);
// A|B会将两者的二进制按位进行或比较,或的结果是二进制的 0011 1101,即十进制的61
System.out.println(A | B);
// A^B(异或)会将两者的二进制按位进行异或比较,异或的结果是二进制的 0011 0001,即十进制的49
System.out.println(A ^ B);
/* ~B(取反)会将B的二进制按位进行取反。13的补码是01101,
内存中的存储形式为0***1101(*表示无效位,其数量取决于分配的内存空间),
’~‘运算符对其按位取反(包括符号位也要取反)的结果是另一个补码1*** 0010
接下来需要原码显示,由于此补码最高位(符号位)是1,表示这是个负数,
因此需将补码先减1,获得反码为1*** 0001(最高位是符号位,***是无效位),
再将反码的非符号位取反,获得的原码为1*** 1110,其中有效位是1110,
即十进制的14。最终显示结果就是-14
*/
System.out.println(~B);
// 十进制的2的二进制是0010,左移3位是01 0000,换算为十进制是16
System.out.println(2 << 3);
// 十进制的32的二进制是0010 0000,右移5位是0000 0001,换算为十进制是1
System.out.println(32 >> 5);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】