学习java第三天

1:
~ (位非)翻转操作数的每一位。
& (位与)当且仅当两个操作数的某一位都非0时该位才为1 。
| (位或)只要两个数字的某一位有一个非0时该位就为1。
^ (位异)两个数字的某一位不相同时改位为1。
“<<”(位左移) 左数字按位左移右数字指定的数。
“>>” (位右移)左数字按位右移左数字指定的数。
“>>>”(位补零右移)左数字的值按右数字指定的位数向右移,移动得到的空位为零填补

位运算的优先等级:

~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|

 

在进行位运算时,需要注意以下几点:

1:>>>和>>的区别是:在执行运算时,>>>运算符的操作数高位补0,而**>>运算符的操作数高位移入原来高位的值**。

2:右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。

3:若进行位逻辑运算的两个操作数的数据长度不相同,则返回值应该是数据长度较长的数据类型。

4:按位异或可以不使用临时变量完成两个值的交换,也可以使某个整型数的特定位的值翻转。

5:按位与运算可以用来屏蔽特定的位,也可以用来取某个数型数中某些特定的位。

:6:按位或运算可以用来对某个整型数的特定位的值置l。

 

在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。

(1)正数的最位为0,其余各位代表数值本身(二进制数)。

(2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1

 

 

/**
	表达式:运算的优先等级不用背,全部用();可以提高代码的可阅读性

*/
class JavaDemo4 
{
	public static void main(String[] args) 
	{
		//System.out.println("Hello World!");
		int  a = 1;
		int  b = 1;
		int c = a+b;
		int d = 7/2;
		

		//System.out.println(c);
		//System.out.println(d);
		//System.out.println(7/2);//"/"两边是整数,就是整除,结果为整数
		//System.out.println(7.0/2);//"/"如果出现小数就不是整除。
		//System.out.println(7%2);//取余数

		int aa = 1;
		//参考当前表达式,a++就是先用原来的值参与表达式运算,
		//++a先自加运算,再用自加的结果参与表达式的运算。
		System.out.println(1+(aa++)); //a = a+1;  2
		System.out.println(3+(++aa));//3

		System.out.println(2>3);
		System.out.println(2<3);
		//&与,&&短路与(在实际开发中一般使用短路与&&)
		int temp = 1;
		if((2<1)&&((temp=0)<2)){
			System.out.println("成立"+temp);

		}else{
			System.out.println("不成立"+temp);
		}

		//|或,||短路或

		int temp2 = 2;
		if((2>1) || ((temp2 = 3)<2)){
			System.out.println("成立"+temp2);
		}else{
			System.out.println("不成立"+temp2);
		}
		

	}
}
/**
	位运算:
	在计算机中负数是用补码表示,补码=源码取反再加一
*/
class  JavaDemo5
{
	public static void main(String[] args) 
	{
		System.out.println(9&3);
		System.out.println(9|3);
		System.out.println(9^3);
		System.out.println(~7);
		System.out.println(7<<2);
		System.out.println(-7>>>5);

		System.out.println(8^3);
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值