java位运算笔记
位运算:
~(非)——》二进制数进行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
java位运算笔记的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- Java位运算总结:位运算用途广泛《转》
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java位运算原理及使用讲解
前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值 ...
- (转)java位运算
转自:http://aijuans.iteye.com/blog/1850655 Java 位运算(移位.位与.或.异或.非) public class Test { public static ...
- Java位运算总结:位运算用途广泛
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java 位运算超全面总结
1.原码.反码.补码 关于原码.反码.补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动 ...
- 我们必须要了解的Java位运算(不仅限于Java)
本文原创地址为 https://www.cnblogs.com/zh94/p/16195373.html 原创声明:作者:陈咬金. 博客地址:https://www.cnblogs.com/zh94/ ...
- Java位运算经典实例
一 源码.反码.补码 正数的源码.反码.补码相同,例如5: 5的源码:101 5的反码:101 5的补码:101 负数的源码.反码.补 ...
- Java 位运算(移位、位与、或、异或、非)
Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...
随机推荐
- Python基础教程思维导图笔记
说明:直接查看图片可能不太清楚,用浏览器打开后,按住 Ctrl ,网上滚动鼠标放大浏览器页面,可以看清楚图片
- Jquery 重置表单
1.重置表单回初始状态 $('#fromid')[0].reset(); 此方法一步到位,不需要一个个的去赋值为空
- 如何在C#中运行数学表达式字符串
方法1:利用DataTable中的Compute方法 1 string expression = "1+2*3"; 2 DataTable eval = new DataTable ...
- Windows系统开发常用类-------------Environment类
Windows系统开发常用类-------------Environment类: SystemDirectory//显示系统目录 MachineName//计算机名称 ...
- ubuntu16.04 下载 fabric
1 Fabric源码下载 我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码: go get github.com/hyperl ...
- 洛谷P2391 白雪皑皑(并查集)
题目背景 “柴门闻犬吠,风雪夜归人”,冬天,不期而至.千里冰封,万里雪飘.空中刮起了鸭毛大雪.雪花纷纷,降落人间. 美能量星球(pty 在 spore 上的一个殖民地)上的人们被这美景所震撼.但是 p ...
- element-ui Cascader 级联选择器示例
<html> <head>test</head> <style> @import url("http://unpkg.com/element- ...
- mysql进阶练习
一 . MySQL进阶练习 /*==========================创建班级表=============================*/ CREATE TABLE class ( ...
- C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库
链表就是一个结构体 指针指向自身结构体类型 双向链表插入的时候 先改变自身 再改变两边 双向链表删除的时候 先改变两边 再改变自己 逆序一个单向链表 回调函数 指向函数的指针 4链表的遍历回调用法 / ...
- fork() 函数解析
转载自http://blog.csdn.net/jason314/article/details/5640969 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通 ...