Java 深入学习(15) —— 位操作符

今天在看 JDK 源码中,关于 HashMap 的部分时,再次看到了

这里写图片描述

位运算符,之前因为很少用到,所以一直没有较为深入的了解过 位运算符(基本不懂那些运算符是干啥的),今天打算借着这次机会来稍稍深入的了解一下。

1 按位操作符

按位操作符有以下四种: &按位与、 |按位或、 ^ 按位异或、 ~按位非(按位非是一元操作符)

这里写图片描述

这里写图片描述

输出如下:

int a = 1;
int b = 0;
int c = 1;
-------------------------------------
按位 ‘与’(&) 操作符: a & b = 0
按位 ‘与’(&) 操作符: a & c = 1
-------------------------------------
按位 ‘或’(|) 操作符: a | b = 1
按位 ‘或’(|) 操作符: b | b = 0
-------------------------------------
按位 ‘异或’(^) 操作符: a ^ b = 1
按位 ‘异或’(^) 操作符: a ^ c = 0
-------------------------------------
按位 ‘非’(~) 操作符: ~(0) = -1
按位 ‘非’(~) 操作符: ~(1) = -2
按位 ‘非’(~) 操作符: ~(-1) = 0
按位 ‘非’(~) 操作符: ~(-2) = 1
-------------------------------------

Process finished with exit code 0

2 移位操作符

移位操作符有以下三种:

  • 左移位运算符(<<),能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位自动补 0
  • “有符号”右移位操作符(>>),则按照操作符右侧指定的位数将操作符左边的操作数向右移动。“有符号”右移位操作符使用“符号扩展”:若符号为正,则在高位插入 0;若符号为负,则在高位插入 1。
  • “无符号”右移位操作符(>>>),它使用“零扩展”:无论正负,都在高位插入 0

这里写图片描述

如果对 char、byte、short 类型的数值进行移位操作处理,那么在移位进行之前,他们会被转换为 int 类型,并且得到的结果也是一个 int 类型的值。 只有数值的右端的 低5位才有用。这样是为了防止移位超过 int 型值所具有的位数。

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


Reference

1、《Java编程思想》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值