java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JAVA中的位运算

解读JAVA中的位运算操作

作者:雨橄

这篇文章主要介绍了JAVA中的位运算操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、名词解释

首先,位移运算仅针对整数,非整数不支持位移运算。

如果对byte、short类型移位,在移位运算前,它们会先被转成int类型,且返回值也是int类型。

如果对long类型移位,则返回值也是long。

2、正负数换算

在java中最高位表示符号位,最高位0代表正数,最高位1代表负数。

用byte数据类型举例,byte占据8个二进制位:

01111111    正数(127)
11111111    负数(-1)

负数的换算方法

已知最高位为1,符号位不变,将其它位取反,然后+1即可得出对应负数。

以byte类型为例:
11111111    先取反->    10000000    再加1->    10000001    得出结果->    -1
10001111    先取反->    11110000    再加1->    11110001    得出结果->    -113
10101010    先取反->    11010101    再加1->    11010110    得出结果->    -86
10000001    先取反->    11111110    再加1->    11111111    得出结果->    -127

已知十进制负数,如何算出二进制原码

符号位不变,将剩下二进制位-1,然后取反即可得出原二进制码。

以byte类型为例:
-1        二进制->    10000001    再减1->    10000000    再取反得出结果->    11111111
-113    二进制->    11110001    再减1->    11110000    再取反得出结果->    10001111
-86        二进制->    11010110    再减1->    11010101    再取反得出结果->    10101010
-127    二进制->    11111111    再减1->    11111110    再取反得出结果->    10000001

3、位移运算演示

因为1字节的byte进行位运算时,会被自动转成4字节的int再进行运算,我们这里直接使用int类型进行演示,方便解读。

4、拓展

~:二进制取反运算。

&:二进制与运算

|:二进制或运算

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文