JAVA位运算符

Java中的位运算符
1.^按位异或(XOR)
public static void main(String[] args) {
int result=5;
result=result^(result+2);
System.out.println(result);//2
}

^这个运算符大家在高中乃至大学数学学习中并不陌生,是与的意思
但是可能与我们想象的不同
首先5的二进制数 101
7的二进制数 111
结果 010----------------------转换成十进制数2
从结果我们可以看出是对应位数相同为0,不同位1
2.<<右移运算符
public static void main(String[] args) {
int result=5;
result=result<<3;
System.out.println(result);
}

首先5的二进制数 101 往右三位101000-----转换为十进制数40
例如:1>>2 就变成100及 1乘以2的平方
2>>2 及10>>2就成为1000及8 2乘以2的平方
那么2的三次方的运算?
int result=2<<2;
 double result=Math.pow(2, 3);

大家知道Integer.MAX_VALUE 的值是2147483647
Integer.MIN_VALUE的值是-2147483648
那么int result=2<<30;
result的值又是多少呢?事实告诉我们是Integer. MIN_VALUE

result的值应该为我们期待中的正的2147483648
但是却超过了Integer.MAX_VALUE
上面的运算正如
if((Integer.MAX_VALUE+1)==Integer.MIN_VALUE){
System.out.println("Integer.MAX_VALUE+1)=Integer.MIN_VALUE");//被执行
}else{
System.out.println("Integer.MAX_VALUE+1)<>Integer.MIN_VALUEs");
}
那么int result=2<<31;又是多少呢?那么就是2的32此方
也就是2的31此方*2 ,及Integer. MIN_VALUE*2= Integer. MIN_VALUE+ Integer. MIN_VALUE
聪明的人可以把Integer. MIN_VALUE+ Integer. MIN_VALUE看成是
-8+(-8)=-8+(-1)+(-7)=7-7=0的,我得试试O(∩_∩)O哈哈~
其实并不是猜那么简单,每个人心中都会猜,那就是思想,挖掘自己的思想,不多解释。

if((Integer.MIN_VALUE+Integer.MIN_VALUE)==0){
System.out.println("you are clever(你很聪明)");
}else{
System.out.println(Integer.MIN_VALUE+Integer.MIN_VALUE);
System.out.println("you are not stupid(并不代表你笨)");
}
打印输出you are clever(你很聪明)
3. & 按位与(AND)
/**
* 5对应101
* 2对应010
* & 000
* 都相同的时候才为1
*大家可以与异或运算符^比较,^不同的时候才为1
*/
int a=5,b=2;
int result=a&b;
System.out.println(result);

4.~ 取反
int a=6;
int result=~a;
System.out.println(result);

Result的值就是a+1的相反数,原理不分析了,本人搞不了
6:及00000000000000000000000000000110
取反11111111111111111111111111111001这个数超过了long超过了int
那就是强转,不分析头大



5. | 按位或(OR) c = a | b
/**
* 5: 101
* 9:1001
*13:1101
*/
int reuslt=5|9;
System.out.println(reuslt);

6.还有>>、>>>左移运算符不多解释和右移相反
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值