位运算符
sxdjj课程资料和演示(免费) (文末有资料链接) ) )。
位运算符是对二进制的各位进行运算的符号,专门用于数字0和1。 其次,Java的位运算符及其用法如表1所示。
表1位运算符
从表1可以看出,Java的位运算符本质上对二进制0和1进行运算,因此在使用位运算符时,将操作数转换为二进制形式进行位运算,然后将结果转换为目标进制。
下面通过一些具体示例详细介绍表2-10中描述的位运算符。 为了说明,以下所有运算都是对byte类型数(即字节大小数)的运算,具体如下:
1 .位运算符“”对运算中涉及的两个操作数进行二进制“按位与”运算。 如果同一位上的2个位全部为1,则该位的运算结果为1,否则为0。
例如,按位运算6和11时,与一个byte类型的数字6相对应的二进制数为00000110,与数字11相对应的二进制数为00001011,具体的运算过程如下。
00000110
00001011
————3——3——3433543—— -
00000010
运算结果为00000010,对应于十进制数值2。
2 .位运算符“|”对参与运算的两个操作数进行二进制“按位或”运算。 如果同一位上的2个位中有1个值为1,则该位的执行结果为1,否则为0。
例如,对6和11进行或运算。 具体的运算过程如下。
00000110
|
00001011
————3——3——3433543—— -
00001111
运算结果为00001111,对应于十进制数值15。
3 .位运算符“~”只对一个操作数操作,对二进制形式的操作数的每一位执行逆操作。 二进制位为0时,相反的值为1。 如果为1,则相反的值为0。
例如,逆运算6,具体运算过程如下。
~ 00000110
————3——3——3433543—— -
11111001
运算结果为11111001,对应于十进制数值-7。
4 .位运算符“^”对参与运算的两个操作数进行二进制异或运算,如果同一位上的两个二进制值相同,则为0,否则为1。
例如,对6和11进行异或运算,具体运算过程如下。
00000110
^
00001011
————3——3——3433543—— -
00001101
运算结果为00001101,对应于十进制数值13。
5 .位运算符“
例如,用二进制数表示byte型数字11为00001011,将其左移一位。 具体的运算过程如下。
00001011
————3——3——3433543—— -
00010110
运算结果为00010110,对应于十进制数值22。
6 .位运算符“将操作数二进制格式的所有位向右移动指定的位数。 运算时,左边的空格根据原来的数字符号位补0或1 (如果原来是负数则全部为1,如果是正数则全部为0 ),向右移动的部分舍去。
例如,用二进制数表示byte型数字11为00001011,将其向右移位1位。 具体运算过程如下。
00001011 1
————3——3——3433543—— -
00000101
运算结果为00000101,对应于十进制数值的5。
7 .位运算符“”是无符号右移,意味着将操作数二进制格式的所有二进制位向右移位指定位数,而与正数无关。 运算时,左边的空位全部补0 (不考虑原数的正负),右边去掉的部分舍去。
例如,用二进制数表示byte型的数字11为00001011,将其无符号地向右移动1位。 具体运算过程如下。
00001011 1
————3——3——3433543—— -
00000101
运算结果为00000101,对应于十进制数值的5。