Java基础-位运算符Bitwise Operators

              Java基础-位运算符Bitwise Operators

                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.位运算特点

  位运算符分为按位与(&),按位或(|),按位异或(^),按位取反(~)。

  位运算存在以下特点:

      1>.如果&|^两侧为布尔值,就是逻辑操作

        如果两侧为整数就是按位操作

      2>.位运算就是对整数的二进制位进行运算

        a>.1 & 1  == 1 

        b>.0  |  0  ==  0

        c>.1 ^ 1  == 1 

        d>.1 ^ 1  == 1  

        e>.~1   ==  0

        f>.~0   ==  1

 

二.案例展示

 1.用法展示

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 public class bitwise{
 8     public static void main(String[] args){
 9         int a = 10;
10         int b = 20;
11         int c = a & b;
12         System.out.println("c==" + c);            //c == 0
13         /**
14             a变量的值10,它对应的二进制形式为:
15             00000000 00000000 00000000 00001010
16             a变量的值20,它对应的二进制形式为:
17             00000000 00000000 00000000 00010100
18     按位与&
19     --------------------------------------------
20             00000000 00000000 00000000 00000000
21         */
22         
23         
24         c = a | b;
25         /**
26             a变量的值10,它对应的二进制形式为:
27             00000000 00000000 00000000 00001010
28             a变量的值20,它对应的二进制形式为:
29             00000000 00000000 00000000 00010100
30     按位或|
31     --------------------------------------------
32             00000000 00000000 00000000 00011110
33         */
34         System.out.println("c==" + c);            //c == 30
35         
36         c = a ^ b;
37         /**
38             a变量的值10,它对应的二进制形式为:
39             00000000 00000000 00000000 00001010
40             a变量的值20,它对应的二进制形式为:
41             00000000 00000000 00000000 00010100
42     按位异或^
43     --------------------------------------------
44             00000000 00000000 00000000 00011110
45         */
46         System.out.println("c==" + c);            //c == 30
47         
48         
49         c = ~a;
50         /**
51             a变量的值10,它对应的二进制形式为:
52             00000000 00000000 00000000 00001010
53     按位取反(~)
54     --------------------------------------------
55             11111111 11111111 11111111 11110101
56         */
57         System.out.println("c==" + c);            c == -11
58         
59         
60     }
61 }

2.面试题来袭

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 public class bitwise{
 8     public static void main(String[] args){
 9         //如果实现两个数的原地交换,不借助与第三个变量,实现两个数的交换
10         int x = 10;
11         int y = 20;
12         
13         //方案一:
14         x = x + y;        //x = 30
15         y = x - y;        //y = 10
16         x = x - y;        //x = 20
17         System.out.println("x== " + x + ",y== " + y);
18         
19         
20         //方法二:
21         x = 10;
22         y = 20;
23         x = x ^ y;        //x == 30
24         y = x ^ y;        //y == 10
25         x = x ^ y;        //x == 20
26         System.out.println("x== " + x + ",y== " + y);
27         
28         
29         //实际应用中,实现两个数的交换,建议使用以下方法,方便其它程序员可以读懂
30         x = 10;
31         y = 20;
32         int temp = x ;
33         x = y;
34         y = temp;
35         
36         System.out.println("x== " + x + ",y== " + y);
37         
38     }
39 }

 

posted @ 2018-04-01 23:20  尹正杰  阅读(641)  评论(1编辑  收藏  举报