java基础(2)运算符

一、位运算 

 &:每一位都比较,有0则0,无0则1

|: 每一位都比较,有1则1,无1则0.

^: 相同则0,不同则1

~:每一位都取反

例如:6&3

           110

&       011

-----------
           010

 

例如:6|3

           110
|         011
-----------
          111

 

例如:6^3

          110
^       011
-----------   

        101

(1)异或运算有个特点,一个数据对另一个数据异或两次,该数据不变

5^10^10=5

运用:     利用^,交换x与y。
x=x^y;  //x=10^5;
y=x^y;  //y=10^5^5=10;
x=x^y;  //x=10^5^10=5;

例如:~6

          int 四个字节
  00000000 00000000 00000000 00000110
  11111111 11111111 11111111 11111001   ~6
  
  10000000 00000000 00000000 00000111   -7   求原码

 

  

<<:左移 左边最高位丢弃,右边补进0

 

0000 0001 -> 0000 0010
>>:右移 最高位是0,左边补齐0,最高位是1,左边补齐1

 

>>>:无符号右移:无论最高位是0还是1,左边都补齐0

 

例如:12<<1  为24(*2的倍数)

    000 00000000 00000000 00001100   12的补码

 (0)0000000 00000000 00000000 000011000   8+16=24 

例如:12>>1  为6(/2的倍数)

         00000000 00000000 00000000 00001100   12的补码

000000000 00000000 00000000 0000110(0)  4+2=6

例如:-2>>>1 为 2147483647

11111111 11111111 11111111 11111110 补码
011111111 11111111 11111111 1111111(0)  结果的补码

 

练习:计算2的8次方

1<<8

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值