文章字数:456,阅读全文大约需要1分钟
看源码时经常能看到一些位运算的操作,这里列举几种常见的用法。
乘除
乘
2^n
1
2
3
4
5
6
7public static void main(String[] args) {
int val = 461637107;
int res1 = val / 16;
int res2 = val >> 4;
System.out.println("res1 = " + res1);// res1 = 28852319
System.out.println("res2 = " + res2);// res2 = 28852319
}除
2^n
1
2
3
4
5
6
7public static void main(String[] args) {
int val = 134563;
int res1 = val * 16;
int res2 = val << 4;
System.out.println("res1 = " + res1);// res1 = 2153008
System.out.println("res2 = " + res2);// res2 = 2153008
}
取模
1 | public static void main(String[] args) { |
设置具体bit位的数据为1
1 | public static void main(String[] args) { |
设为0同样思路
获取二进制第n个位置上的值
1 | public static void main(String[] args) { |
基本运算符
1.&(按位与运算) 只要有一个为0,就为0,如 0001 & 0100 结果为 0000
2. |(按位或运算) 只要有一个为1,就为1,如 0001 & 0100 结果为 0101
3. ~(取反运算) 这个只对一个数据进行操作,0取反为1,1取反为0;
4. ^ (按位异或运算) 不同为1,相同为0, 如 0001 ^ 0100 结果为 0101