• 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 }
  • 相关阅读:
    ti8168 eth0 启动
    MVC 5 Ajax + bootstrap+ handle bar 例: 实现service 状态
    MinGW 介绍
    VC POST表单——登录验证新浪邮箱
    关于ActionContext.getContext()的使用方法心得
    java对象数组
    播放音乐案例
    service
    监听短信(监听系统广播)
    普通广播接收者和有序广播接收者
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8689059.html
Copyright © 2020-2023  润新知