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);
}
}
posted @   JohnnyH  阅读(91)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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】
点击右上角即可分享
微信分享提示