java里的 ^ 是啥

java里的 ^

在这里写学习笔记还是很好的

在Objects.hashCode(key) ^ Objects.hashCode(value);遇到了 ^

那么 ^ 是什么呢?
按位异或运算符(^)是一个二元运算符,要化为二进制进行计算,在运算的两个元中,两个相同位相同,则结果为0,否则为1
如:
a =14
b = 8
a^b=?
a(2进制)=1110,b(2)=1000,a ^ b = 1110 ^ 1000=0110=6
也就是0 ^ 0=0, 1 ^ 0=1 ,0 ^ 1=0,1 ^ 1=0运算

与之相同的二元运算符

运算名表达方式
按位与a&b
按位或a | b
按位异或a^b
按位取反~a
左移a<<b
带符号右移a>>b

按位与&

1&1=1
1&0=0
0&1=0
0&0=0

按位或 |

1|1=1
1|0=1
0|1=1
0|0=0

按位取反~

按位取反,因为整数在计算机里储存的是二进制,对有符号的整数里,二进制的最高位表示符号1为负数,0为正数
对二进制取反,0-》1,1-》0
然后计算出取反后二进制数的十进制
但由于计算机里储存负数是补码的形式,在获得原码的时候会加1,就导致了~5=-6

左移<<

左移运算符是一个计算机用语。用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。
14(2)=00001110,则14<<2=00111000=56

带符号右移>>

带符号右移>>,与左移相类似,只不过是带着符号位向右移动,这也就不难解释,为什么没有带符号左移动了

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值