📅  最后修改于: 2020-03-24 02:39:31             🧑  作者: Mango
按位运算符用于对数字的各个位进行操作。它们可以与任何整数类型(char,short,int等)一起使用。在执行二进制索引树的更新和查询操作时使用它们。
a = 5 = 0101(二进制) b = 7 = 0111(二进制) 5和7的按位或运算 0101 | 0111 ________ 0111 = 7(十进制)
a = 5 = 0101(二进制) b = 7 = 0111(二进制) 5和7的按位与运算 0101 &0111 ________ 0101 = 5(十进制)
a = 5 = 0101(二进制) b = 7 = 0111(二进制) 5和7的按位XOR运算 0101 ^ 0111 ________ 0010 = 2(十进制)
a = 5 = 0101(二进制) 5的按位补码运算 〜0101 ________ 1010 = 10(十进制)
注:编译器将给出该数字的2的补码,即2的10的补码为-6。
// Java展示按位运算
public class operators {
public static void main(String[] args)
{
//初始化
int a = 5;
int b = 7;
// 按位 and
// 0101 & 0111=0101 = 5
System.out.println("a&b = " + (a & b));
// 按位 or
// 0101 | 0111=0111 = 7
System.out.println("a|b = " + (a | b));
// 按位 xor
// 0101 ^ 0111=0010 = 2
System.out.println("a^b = " + (a ^ b));
// 按位 and
// ~0101=1010
// 给出二进制的补码 1010 = -6
System.out.println("~a = " + ~a);
// 可以使用简短运算符
// a=a&b
a &= b;
System.out.println("a= " + a);
}
}
输出:
a&b = 5
a | b = 7
a ^ b = 2
〜a = -6
a = 5
移位运算符:这些运算符用于将数字的位向左或向右移位,从而分别将数字乘以或除以2。当我们必须将数字乘以或除以2时,可以使用它们。通用格式:
number shift_op number_of_places_to_shift;
例 1:
a = 10
a>>1 = 5
例 2:
a = -10
a>>1 = -5
我们保留了符号位.
例 1:
a = 10
a>>>1 = 5
例 2:
a = -10
a>>>1 = 2147483643
不能保留符号位.
a = 5 = 0000 0101
b = -10 = 1111 0110
a << 1 = 0000 1010 = 10
a << 2 = 0001 0100 = 20
b << 1 = 0000 1010 = -20
b << 2 = 0001 0100 = -40
// Java展示左移运算符
public class operators {
public static void main(String[] args)
{
int a = 5;
int b = -10;
// 左移运算符
// 0000 0101<<2 =0001 0100(20)
// 等效于 5*(2^2)
System.out.println("a<<2 = " + (a << 2));
// 右移运算符
// 0000 0101 >> 2 =0000 0001(1)
// 等效于 5/(2^2)
System.out.println("b>>2 = " + (b >> 2));
// 无符号右移运算符
System.out.println("b>>>2 = " + (b >>> 2));
}
}
输出:
a<<2 = 20
b>>2 = -3
b>>>2 = 1073741821