我们知道,计算机中的数据信息都是以二进制0、1形式存在的,具体来说是以该数据的补码形式 。在位运算符中有:>>,<<, |,^,~,>>> 。那么二进制数据与位运算符之间会有什么化学反应呢?下面先写一个小demo
package com.basic.day02;/* * 测试 & | ^ ~ * */public class LogicTest2 { public static void main(String[] args) {int a = 4;int b = 7;System.out.println(a & b);//4System.out.println(a >> 2);//1System.out.println(a << 2);//16System.out.println(16 >>> 3);//2System.out.println(a | b);//7System.out.println(a ^ b);//3System.out.println(~ a);//-5System.out.println(~ b);//-8 }}首先,我们将变量a,b换成2进制,然后按照0是false,1是true进行相应的计算 。
【java基础要学多久 Java基础---二进制与位运算符之间的关系】

文章插图

文章插图
&:按位与运算(0&1=0,1&0=0,0&0=0,1&1=1),
|:按位或运算(0|1=1,1|0=1,1|1=1,0|0=0)
>>:右移 (3>>1 == 3/2=1),即>>n,右移n次,就整除2的n次幂 。符号位是0时,右移空缺补0;符号位是1时,右移空缺补1.
<<:左移(3<<2 == 3*2*2=12 ),即<<n,左移n次,就乘以2的n次幂 。被移除的高位丢弃,空缺位补0.
>>>:无符号右移,空缺位补0.
^:按位异或(0^1=1,1^0=1,1^1=0,0^0=0),即不同才是true,相同才是false 。
~:按位取反,各二进制按补位取反 。先按位取反,得到一个负数,此时得到负数二进制的补码,然后在此基础上-1,得到反码(符号位不变),最后按位取反,得到负数的源码(符号位不变) 。
本文来自博客园,作者:小孙不是程序员,转载请注明原文链接:https://www.cnblogs.com/sunlincode/p/sun.html
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
