位运算:

~(非)——》二进制数进行0和1的互换

样例:

public class Test {
public static void main(String[] args) {
System.out.println(~-2);//输出1
System.out.println(~-1);//输出0
System.out.println(~0);//输出-1
System.out.println(~1);//输出-2
System.out.println(~2);//输出-3
System.out.println(~3);//输出-4
}
}

^(异或)——》12 ^ 10 = ...01100^01010 =  00110 = 6

样例:

public class Test {
public static void main(String[] args) {
int a = 0;
int b = 0;
b = a = 12^10;
System.out.println(a);//输出为 6
a = a^12;
System.out.println(a);//输出为 10
b = b^10;
System.out.println(b);//输出为 12
}
}

应用:二个不同的数进行交换

public class Test {
public static void main(String[] args) {
int a = 12;
int b = 10;
System.out.println(a + "---" + b);// 输出为12---10
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a + "---" + b);// 输出为10---12
}
}

&(与)——》12 & 10 = ...01100 & 01010 = 01000 = 8

样例:

public class Test {
public static void main(String[] args) {
int a = 12;
int b = 10;
int c = a&b;
System.out.println(c);//输出为 8
}
}

应用:

public class Test {
public static void main(String[] args) {
int[] a = new int[2];
a[0] = 5;
a[1] = 6;
for (int i = 0; i < a.length; i++) {
if ((a[i] & 1) == 1) {// 推断是否为奇数
System.out.println(a[i] + "奇数");
} else {
System.out.println(a[i] + "偶数");
}
}
// 输出为:
// 5"奇数"
// 6"偶数"
}
}

|(或)——》12 | 10 = ...01100 | ...01010 = 01110 = 14

样例:

public class Test {
public static void main(String[] args) {
int a = 12;
int b = 10;
// ...01100 | ...01010 = 01110 = 14
int c = a | b;
System.out.println(c);// 输出为14
}
}

应用:和位移一起运算能够打包成不同位数的整数

public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
// 256 | 2 = ...01 0000 0000 | ...0010 = ...01 0000 0010 = 258
int c = a << 8 | b;
System.out.println(c);// 输出为258
}
}

>>(右位移)——》12>>2 = 00...01100 >>2 = 00...00011 = 3

-1 >>>24 = 1111...111 >>>24 = 1111...1111 1111 = -1

>>>(无符号)——》 -1 >>> 24 = 1111...111 >>> 24 = 0000...1111 1111 = 255

public class Test {
public static void main(String[] args) {
int a = -1;
// 1111...111 >>> 24 = 0000...1111 1111 = 255
int b = a>>>24;
System.out.println(b);// 输出为255
}
}

12>>2 = 00...01100 >>2 = 00...00011 = 3

最新文章

  1. 【Win 10应用开发】把文件嵌入到XML文档
  2. linux用命令删除重复行
  3. 混合高斯模型:opencv中MOG2的代码结构梳理
  4. java properties 文件中书写相对路径
  5. QTcpsocket 实现FTP
  6. NOI2014 D2T3 购票 简单粗暴解法(凸包维护)
  7. 转:sql语句中GROUP BY 和 HAVING和使用 count()
  8. Linux中shell文件操作大全
  9. C++中搜索、截取字符串
  10. 通过Java字节码发现有趣的内幕之String篇(上)(转)
  11. 1. LAMP----PHP开发环境搭建(Win)
  12. 2、hibernate七步走完成增删改查
  13. Omi框架学习之旅 - Hello World 及原理说明
  14. Ext.Component事件
  15. 误操作导致 lvdisplay 命令不存在解决
  16. 跟我一起使用android Studio打包react-native项目的APK
  17. LeetCode(1): 两数之和
  18. Android入门(一) IDEA上创建Android应用之helloworld
  19. Oracle 表操作(转)
  20. css盒子模型和定位

热门文章

  1. 前端总结&#183;基础篇&#183;CSS
  2. 动画和图形:OpenGL ES
  3. javascript中caller和callee call和apply
  4. ubuntu16.04 下载 fabric
  5. 以SqlHelper为例论面向对象中封装的使用(续)
  6. WindowsNT设备驱动程序开发基础
  7. C# dataGridView1 添加数据 和清空数据
  8. 常用 CSS 选择器
  9. Js中判断变量存不存在的问题
  10. day06-08初识面向对象