您的位置 首页 java

「景哥java」搞懂java的运算符

什么是 ^ 操作?

^ 是一种 位运算符 ,叫“ 异或 ”,运算逻辑是:相同为0,不同为1。

举例:0^1 = 1,1^1 = 0

位运算符还有:与&、或 |、非 ~

与&:a & b 时,只有a、b都为1,结果才是1,否则结果为0。

或 | :a | b 时,a、b只要有一个为1,那么结果就是1,否则为0。

非 ~ :~a 时,a为0则结果是1;a为1则结果是0。

什么是源码、 反码 、补码?

原码 :最左边一位表示这个数的正负,0代表正,1代表负,后面是它的 有效数字

反码:最左边符号位0代表正,1代表负;后面的有效数字,正数的原码和反码一样,负数的反码是原码数字的取反。

补码:最左边符号位0代表正,1代表负;后面的有效数字,正数的补码和原码一样,负数的补码是反码+1

什么是 >> 操作?

>> 是右移运算符,num >> 1,相当于num除以2

20的 二进制 是10100,20 >> 1,结果是01010,即10。

与之对比的是 << 左移操作符, num << 1,相当于num乘以2。

20<<1,结果是101000,即40。

什么是 >>> 操作?

>>> 是无符号右移操作符,对于正数而言,>> 和 >>> 效果一样;对负数而言,先要计算其补码,再右移,高位补0。

负数的无符号右移要复杂一些,因为负数在内存中是以补码的形式存在:

-2原码:10000000 00000000 00000000 00000010

-2反码:11111111 11111111 11111111 11111101

-2补码:11111111 11111111 11111111 11111110

11111111 11111111 11111111 11111110 >>>1 即 01111111 11111111 11111111 11111111

所以,-2 >>> 1的结果并不是 -1 或 1 [捂脸],而是 2147483647

与之对应的是无符号左移操作符 <<< 。

如果能给您带来帮助,欢迎关注、收藏 [谢谢]

文章来源:智云一二三科技

文章标题:「景哥java」搞懂java的运算符

文章地址:https://www.zhihuclub.com/186641.shtml

关于作者: 智云科技

热门文章

网站地图