Java 位运算的解读 & | ^ ~ << >>
Java中的位运算包括以下几种:
按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0。
1 2 3 4 | int a = 3 ; // 二进制 0011 int b = 5 ; // 二进制 0101 // 0001 = 1 System.out.println( "a & b = " + (a & b)); |
按位或(|):对应位上,如果两个数有一个为1,则结果为1,否则为0。
1 2 3 4 | int a = 3 ; // 二进制 0011 int b = 5 ; // 二进制 0101 // 0111 = 7 System.out.println( "a | b = " + (a | b)); |
按位异或(^):对应位上,如果两个数不相同,则结果为1,否则为0。
1 2 3 4 | int a = 3 ; // 二进制 0011 int b = 5 ; // 二进制 0101 // 0110 = 6 System.out.println( "a ^ b = " + (a ^ b)); |
按位取反(~):对每一位,将0变为1,将1变为0。
1 2 3 4 5 6 7 8 9 10 11 | // ~ 的运算规则: // ~0 = -1 // ~1 = -2 // ~2 = -3 // ~3 = -4 // 因此,~3 = 1100 = -4 int a = 3 ; // 二进制 0011 // 1100 = -4 // a + ~a = -1 ,等于 1111 // 1111 + 1 = 0000 = 0 System.out.println( "~a= " + (~a)); |
左移(<<):将二进制数向左移动指定位数,右边用0填充。
1 2 3 4 | int b = 5 ; // 二进制 0101 // 1010 = 10 b << 1 // 10100 = 20 b << 2 System.out.println( "b << 2 " + (b << 1 )); |
右移(>>):将二进制数向右移动指定位数,左边用符号位填充。
1 2 3 4 | int b = 5 ; // 二进制 0101 // 0010 = 2 b >> 1 // 0001 = 1 b >> 2 System.out.println( "b >> 2 " + (b >> 2 )); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步