前言:
当前我们对“在java语句中位运算操作数只能为整型或 数据”大约比较关心,姐妹们都想要学习一些“在java语句中位运算操作数只能为整型或 数据”的相关内容。那么小编在网上网罗了一些对于“在java语句中位运算操作数只能为整型或 数据””的相关内容,希望姐妹们能喜欢,兄弟们一起来了解一下吧!java位运算符
位运算的操作数类型是整型,有符号的或无符号的。位运算符可以分为两大类:位逻辑运算符和位移运算符。
位运算符种类
& 与 a&b,
丨或 a|b,
~ 取反 ~a,
^ 异或 a^b,
<< 左移位 a<<3,
>> 右移位 b>>3,
>>> 无符号右移位 x>>>3
1. 位逻辑运算符
位逻辑运算符包括&、|、^和~,前三个是双目运算符,第四个是单目运算符。
(1)位逻辑与实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求与, 若两个操作数对象同一位都为 1,则结果对应位为 1,否则结果对应位为0。
按位与运算符:
运算规则:两个操作数中位都为1,结果才为1,否则结果为0。例如(a的值为130,二进制为10000010;b的值为128,二进制为10000000。根据&运算符的运算法则可以知道,只有一个位都为1,结果才为1,因此结果是10000000,即128。)
(2)位逻辑或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求或,若两个操作数对象同一位都为 0,则结果对应位为 0,否则结果对应位为1。
按位或运算符:
运算规则:两个位只要有一个为1,那么结果就是1,否则就为0。例如(a的值为131,二进制为10000011;b的值为128,二进制为10000000。根据运算法则可以知道,只有两个位有一个位是1,结果就是1,因此运算结果是10000011,即131。)
(3)位逻辑异或实际上是将操作数转换成二进制表示方式,然后将两个二进制操作数对象从低位(最右边)到高位对齐,每位求异或,若两个操作数对象同一位不同时,则结果对应位为 1,否则结果对应位为0。
按位异或运算符:
运算规则:相同则结果为0,不同则结果为1。例如(a的值为15,二进制为1111;b的值为3,二进制为0011。根据运算法则可以知道,结果为1100,即12。)
(4)取反运算符,实际上是将操作数转换成二进制表示方式,然后将各位二进制位由1变为0,由0变为1。
按位非运算符:
运算规则:如果位为0,结果是1;如果位为1,结果是0。
&、|、^也可以用于逻辑运算。
2. 位移运算符
移位运算有三个,分别是左移<<、右移>>和无符号右移>>>,这三个运算符都是双目操作。
(1)左移是将一个二进制操作数对象按指定的移动位数向左移,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。左移相当于乘以2的幂。
(2)右移是将一个二进制的数按指定的位数向右移动,右边(低位端)弃,左边(高位端)用符号位补充,正数的符号位为 0,负数的符号为 1。
(3)无符号右移是将一个二进制的数按指定的位数向右移动,右(低位端)弃,左边(高位端)一律用 0 填充,运算结果相当于除以 2 的幂。
左移、右移、无符号右移运算符:
左移:将运算符左边的对象,按右边制定的位数向左移动运算符,并在低位补0。向左移n位,就相当于乘以2^n。
右移:将运算符左边的运算对象按右边指定的位数向右移动运算符。如果是正数,则在高位补0;如果是复数,则在高位补1。
无号符:将运算符左边的对象按右边指定的位数向右移动运算符,并且在高位补0,其实右移n 位,就相当于除于2^n。
从二进制的实现机制来说, byte、short不适用于>>>操作。