Java学习总结(16.05.31)Java位运算符
来源:互联网 发布:怎样下载视频软件 编辑:程序博客网 时间:2024/05/16 00:53
个人认为,位运算符是Java运算符中比较容易遗忘的运算符。位运算符多用于对数据进行底层操作,Java的位运算符有7种,下面将其一一列出以便必要时查找。
按位与(&)(双目双目运算符)
对两个操作数的补码逐位进行对比,若两操作数的补码同一位都为1,则所得结果的补码对应的位为1,否则为0.,将补码化成原码即可得到结果
例: -5 & 3 = 3
十进制
原码
反码
补码
-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
3
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
-5 & 3=3
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
按位或(|) (双目运算符)
对两个操作数的补码逐位进行对比,若某一位中有一个或以上操作数的补码为1,则所得结果的补码对应的位为0,若两操作数的补码同一位都为1,则所得结果的补码对应的位为0,将所得补码化成原码即可的到结果。
例: -5 | 3= -5十进制
原码
反码
补码
-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
3
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
-5 | 3=-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
按位异或(^)(双目运算符) 用这个运算符是不能进行指数运算的
对两个操作数的补码逐位进行对比,若某一位中两个操作数的补码不一致时(一个为1,一个为0),则所得结果的补码对应的位为1,否则为0,将所得补码化成原码即可得到运算结果。
例: -5 ^ 3=-8
十进制
原码
反码
补码
-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
3
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011
-5 ^ 3=-8
1000 0000 0000 0000 0000 0000 0000 1000
1111 1111 1111 1111 1111 1111 1111 0111
1111 1111 1111 1111 1111 1111 1111 1000
按位取反(~)(单目运算符)
对操作数的补码进行运算,对操作符的补码的每一位取反(1变成0, 0变成1),将所得补码化成原码即可的到取反结果。
例:……-5 = 4
十进制
原码
反码
补码
-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
^-5 = 4
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0100
0000 0000 0000 0000 0000 0000 0000 0100
按位左移(<<) (双目运算符)
将左操作数的补码向左移动右操作数个位(例如,若右操作数位2,则将左操作数的补码左移两位),,然后右边空出的若干位用0补上,再将左边超出去的若干位摄取,即可得到计算结果的补码,将所得补码化成原码即可得到运算结果
例: -5 << 3 = -40
十进制
原码
反码
补码
-5
1000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010
1111 1111 1111 1111 1111 1111 1111 1011
-5<<3 = -40
1000 0000 0000 0000 0000 0000 0010 1000
1111 1111 1111 1111 1111 1111 1101 0111
111 1111 1111 1111 1111 1111 1111 1101 1000
(红色的截断) (蓝色的位新补上的0)按位右移 (>>)(双目运算符)
计算原理与按位左移相似,按位右移运算符对左操作数的补码进行右移,左边空出的位用符号为的数字补充,右边超出去的位则摄取。
无符号右移(>>>)(双目运算符)
无符号右移运算符计算方式与按位右移相似,不同的是,无符号右移运算符将补码右移后,左边空出的位都用0来补充。
另外,& | ~这三个运算符还可以对布尔值进行运算
operator
true op true
true op false
False op false
&
true
false
false
|
true
true
false
^
false
true
false
& | ^ 这三个运算符都符合交换律& 、| 与逻辑运算符&&,|| 的运算结果一样但运算规则不一样:前者对两个布尔型的操作数都会进行判断,例如ture | true,系统判断完左操作数之后会再判断右操作数然后才会返回结果,而true|| true则是系统判断第一个操作数为true时就会直接返回true。
^对布尔值的运算:当左右两个布尔值不一致(相异)时返回true,否则返回false。
- Java学习总结(16.05.31)Java位运算符
- Java位运算符总结
- Java位运算符总结
- java位运算符总结
- Java 位运算符总结
- Java 位运算和运算符总结
- Java位运算总结
- java位运算总结
- java位运算总结
- Java学习笔记(位运算符)
- Java位运算学习
- java学习-位运算
- java逻辑运算符位运算符总结
- 【转载】Java位运算总结
- Java学习基础:运算符和表达式(算数运算、关系运算、逻辑运算、位运算、条件运算、赋值运算)
- 第十节 java学习 位运算符
- Java学习之位运算符
- java学习07--位运算符
- 界面跳转(大牛勿喷,本人在开发中所认识到的小技巧)
- 安卓之创建,读写文件,本地收藏,访问文件的权限和产品测试种类(方法)
- linux环境搭建dubbo+zookeeper
- VS2010下Cannot find or open the PDB file
- 实现复数类中的运算符重载
- Java学习总结(16.05.31)Java位运算符
- 204. Count Primes
- 栈和堆最大可以申请的内存数
- Middle-题目104:43. Multiply Strings
- Android动画用到的基本的属性和学习笔记
- 《JavaScript学习笔记》:DOM_添加节点、删除节点、文档碎片
- LeetCode 78 Subsets
- 简单爬虫
- jquery上传图片本地预览插件V1.2