Java位运算符介绍

位运算符

位运算符主要是针对二进制的,它包括了”&“(按位与)、”|“(按位或)、”~“(按位非)、”^“(按位异或)四种。

& 按位与

两个二进制按位比对,若同位上都是1,才返回1,否则返回0,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是1(0001)。示例如下:

System.out.println(1 & 3); // 1 

|  按位或

两个二进制按位比对,若同位上都是0,才返回0,否则返回1,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是3(0011)。示例如下:

System.out.println(1 | 3); // 3 

~ 按位非

一个二进制进行取反,若位上为1,则返回0,否则返回1,最后返回新的二级制。以3(0011)为例,返回的结果是-4(1100)。示例如下:

System.out.println(~3); // -4

^ 按位异或

两个二进制按位比对,若同位上都是相同的数字(0或1),才返回0,否则返回1,最后返回新的二进制,以1(0001)和3(0011)为例,返回的结果是2(0010)。示例如下:

System.out.println(1 ^ 3); // 2 

二进制除了位运算符还有移位运算符。

移位运算符

移位运算符包括了”<<“(左移)、”>>“(带符号的右移)、”>>>“(无符号的右移)。在移位运算时,byte、short和char类型移位后的结果会变成int类型,对byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移位long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。

<< 左移运算符

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。以3(0000 0011)为例,左移2位,返回的结果为(12)0000 1100。示例:

System.out.println(3 << 2); // 12 
System.out.println(3 << 34); // 12 

>> 带符号的右移

按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:

System.out.println(3 >> 1); // 1 
System.out.println(3 >> 33); // 1 
System.out.println(Integer.toBinaryString(-3)); // 11111111111111111111111111111101 
System.out.println(Integer.toBinaryString(-3 >> 1)); // 11111111111111111111111111111110 
System.out.println(-3 >> 1); // -2 
System.out.println(-3 >> 34); // -1 
>>> 无符号的右移

按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补零。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:

System.out.println(3 >>> 1); // 1 
System.out.println(3 >>> 34); // 0 
System.out.println(Integer.toBinaryString(-3>>>1)); //  01111111111111111111111111111110 
System.out.println(-3 >>> 1); // 2147483646 
System.out.println(-3 >>> 34); // 1073741823


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值