java位运算符

javaSE 专栏收录该内容
37 篇文章 1 订阅

位运算符

所有数据在计算机内存中都是以二进制的形式进行存储的,位运算符直接操作二进制,所以它是高效的。
位运算符:两类7个。

运算符名称计算运算符
按位与&
按位或|
按位异或^
取反~
运算符名称移位运算符
左移<<
(有符号)右移>>
(无符号)右移>>>

位运算符的使用仅用于整数byte short int long char(无符号)
案例
&:与运算,当参与运算的两边都是1的时候,为1,否则为0

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

|:或运算,有1为1,否则为0

System.out.println(1|0);//1
System.out.println(1|1);//1
System.out.println(0|1);//1
System.out.println(0|0);//0
另外两个可以参照上面的案例
^:异或运算,不同为1,否则为0
~:反码,0为1,1为0

移位解析

移位 = 0b(高位)10001010(低位)
 00000001
00000001?//左移一位
000000010//?位置添0
public class Test{
public static void main (String [] args){
	byte i = 1 ; 			//0b 0000 0001
	i = (byte)(i<<1);	//0b 0000 0010
	System.out.println(i);
	}
}

输出结果为:2

左移可能改变变量符号:

正数变负数
byte b = 127; //127=0b01111111
b=b<<1; //b=0b11111110=-2
负数正数
byte b = -128; // 127 = 0b1000_0000
b=b<<1; //b=0b0000_0000=0

有符号右移>>规则为高位向低位移动
二进制数向右移动对应的位数,如果这个数是正数则高位补0,反之负数补1

有符号右移不改变该值的正负

无符号右移>>>规则为高位向低位移动
二进制数向右移动对应的位数,低位舍弃,不管该数为正负,其高位都补0

无符号右移会把负数变成正数,但是正数还是正数
  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值