博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java位运算笔记
阅读量:5214 次
发布时间:2019-06-14

本文共 2170 字,大约阅读时间需要 7 分钟。

位运算:

~(非)——》二进制数进行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

转载于:https://www.cnblogs.com/jzssuanfa/p/7114861.html

你可能感兴趣的文章
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>