Java 位运算符,
Java 位运算符,
1.^(异或运算)
public static void main(String[] args) {
System.out.println("2^3运算的结果是 :"+(2^3));
//打印的结果是: 2^3运算的结果是 :1
}
那么这个1是怎么来的,我们要知道^、<<、>>等位运算符主要针对二进制,算异或的时候相同的为0,不同的为1
2转换成二进制是0010
3转换成二进制是0011
所以 0010^0011 的结果就是 0001 转换成十进制是1 ,所以2^3=1
2.|:(或 运算)
操作的规则是:仅当两个操作数都为0时,输出的结果才为0。
否则为1,示比例如以下:
12 的二进制为 1100
5 的二进制为 0101
则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13;
3.<<向左位移
public static void main(String[] args) {
System.out.println("2<<3运算的结果是 :"+(2<<3));
//2<<3运算的结果是 :16
}
在运算的时候同样要把十进制转换成二进制, 2的二进制是0010 ,向左移3位后面用000补齐,结果是10000 二进制的10000转换成十进制是16(从右往左分别是1,2,4,8,16,32….)
4>>向右位移,代码如下public static void main(String[] args) {
System.out.println("2>>3运算的结果是 :"+(2>>3));
//2>>3运算的结果是 :0
}
原理和左移是一样的,先转成二进制0010,再向右侧移动三位,向右侧移动的时候在左侧补齐0,移动几位补齐几位,移动后的二进制是0000 转成十进制就是0了。
5.&运算 按位“与”的计算是把两个数字分别写成二进制形式,然后按照每一位判断,&计算中,仅当两个操作数都为1时,输出结果才为1,否则为0。
看下例子:
System.out.println(1&2);
打印0 , System.out.println(1&1);打印1
1的二进制为: 0001
2的二进制为: 0010
运算的结果为:0000 转换成十进制为 0 所以 1&2 = 0
同理两个1的&运算的二进制结果为0001 转换成十进制为1 所以 1&2 = 1
12 的二进制为 1100
5 的二进制为 0101
则 12 & 5 的二进制为 0100 转换成十进制为4,则完整的运算式为 12 & 5 = 4;
注:关于十进制与二进制的转换,简单的说每四位可以遵循”8421“原则,1001即8+1=9,1011即8+2+1=11
二进制怎么转化成十进制转换的方法是:
把各个为拆开。乘以2的次幂。末尾位乘2的0次幂。依次类推。
比如:10010111
十进制=1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2+1*2^0 ;
PS:末尾位是2的零次幂,所以是1。
相关文章
- 暂无相关文章
用户点评