Java操作符

1、按位操作符

按位操作符用来操作整数基本数据类型中的单个“比特”(bit),即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。

按位“与”:&

如果两个输入位都是1,则输出位为1;否则输出位为0;

按位“或”:|

如果两个输入位只要有一个为1,则输出位为1;只有在两个输入位都是0的情况下,输出位才是0;

按位“异或”:^

如果输入位的某一个是1,但不全是1,那么输出位为1

按位“非”:~,也称为取反操作符,它是一元操作符,只对一个操作数进行操作

若输入0,则输出1,;若输入1,则输出0;

由于位是非常“小”的,所以按位操作符仅使用了一个字符

按位操作符可与等号(=)联合使用,以便合并运算和赋值:&=、|=、^=都是合法的,“~”是一元操作符,不可以与“=”联合使用

2、移位操作符

移位操作符的运算对象也是二进制的“位”。移位操作符只可用来处理整数类型。

左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)

“有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移动。

“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入0;若符号为负,则再高位插入1。

“无符号”右移位操作符(>>>),使用“零扩展”:无论正负,都在高位插入0。

如果对char、byte或者short类型的数值进行移位处理,那么在移位进行之前,它们会被转换为int类型,并且得到的结果也是一个int类型的值。只有数值右端的低5位才有用。

若对long类型的数值进行处理,最后得到结果也是long。

“移位”可与“等号”(<<=或>>=或>>>=)组合使用。操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋给左边的变量。

在进行“无符号”右移位结果赋值操作时,可能会遇到一个问题:如果对byte或short值进行这样的移位运算,得到的可能不是正确的结果。它们会先被转换成int类型,再进行右移操作,然后被截断,赋值给原来的类型,这样的情况下可能得到-1的结果。

 

左移1位相当于当前整数的数值*2

左移2位相当于当前整数的数值*4

......

右移1位相当于当前整数的数值/2

右移2位相当于当前整数的数值/4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值