zoukankan      html  css  js  c++  java
  • java运算符

    Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)、左移(<<)、右移(>>)

    /********************************************
     * java运算符
     */
    public  class BasicOperating {
    
        /**
         *  “&”与运算符,只有两个位都是1,结果才是1
         *   129,转换成二进制就是10000001,
         *   128,转换成二进制就是10000000。
         *                  结果10000000
         */
        public static void  and (){
            System.out.print("129、128的与"&"操作结果为:");
            System.out.println(i&j);
        }
    
        /**
         *  “|”或运算符,两个位只要有一个为1,那么结果就是1,否则就为0
         *   129,转换成二进制就是10000001,
         *   128,转换成二进制就是10000000。
         *                  结果10000001
         */
        public static void  or (){
            System.out.print("129、128的或"|"操作结果为:");
            System.out.println(i|j);
        }
    
        /**
         *  “~”非运算符,如果位为0,结果是1,如果位为1,结果是0
         *   129,转换成二进制就是10000001,
         *                  结果01111110
         */
        public static void  no (){
            System.out.print("129、128的非"~"操作结果为:");
            System.out.println(~i);
        }
    
        /**
         *  “^”异或运算符,相同则结果为0,不同则结果为1
         *   129,转换成二进制就是10000001,
         *   128,转换成二进制就是10000000。
         *                  结果00000001
         */
        public static void  no_or (){
            System.out.print("129、128的异或"^"操作结果为:");
            System.out.println(j^i);
        }
    
    
        /**
         *  “<<”左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)
         *  129,转换成二进制就是10000001,
         *                  结果10000001000
         */
        public static void  left_transf (){
            System.out.print("129左移3位"<<"操作结果为:");
            System.out.println(i<<3);
        }
    
        /**
         *  “>>”  有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.
         *  129,转换成二进制就是10000001,
         *                 结果10000
         */
        public static void  right_transf (){
            System.out.print("129右移3位">>"操作结果为:");
            System.out.println(i>>3); //16
        }
    
        /**
         *  “>>>”  "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.
         *  129,转换成二进制就是10000001,
         *                 结果10000
         */
        public static void  right_noCode_transf (){
            System.out.println("129右移3位">>>"操作结果为:");
    
            System.out.println(Integer.toBinaryString(i));//10000001
            System.out.println(Integer.toBinaryString(i>>>3));//10000
            System.out.println(i>>>3);//16
        }
    
        public static  int i =  129  ;
        public static  int j = 128 ;
        public static void main(String[] args) {
    
            and();
            or();
            no();
            no_or();
            left_transf();
            right_transf();
            right_noCode_transf();
        }
    }
    

      

    /********************************************
    * java运算符
    */
    public class BasicOperating {

    /**
    * “&”与运算符,只有两个位都是1,结果才是1
    * 129,转换成二进制就是10000001,
    * 128,转换成二进制就是10000000。
    * 结果10000000
    */
    public static void and (){
    System.out.print("129、128的与"&"操作结果为:");
    System.out.println(i&j);
    }

    /**
    * “|”或运算符,两个位只要有一个为1,那么结果就是1,否则就为0
    * 129,转换成二进制就是10000001,
    * 128,转换成二进制就是10000000。
    * 结果10000001
    */
    public static void or (){
    System.out.print("129、128的或"|"操作结果为:");
    System.out.println(i|j);
    }

    /**
    * “~”非运算符,如果位为0,结果是1,如果位为1,结果是0
    * 129,转换成二进制就是10000001,
    * 结果01111110
    */
    public static void no (){
    System.out.print("129、128的非"~"操作结果为:");
    System.out.println(~i);
    }

    /**
    * “^”异或运算符,相同则结果为0,不同则结果为1
    * 129,转换成二进制就是10000001,
    * 128,转换成二进制就是10000000。
    * 结果00000001
    */
    public static void no_or (){
    System.out.print("129、128的异或"^"操作结果为:");
    System.out.println(j^i);
    }


    /**
    * “<<”左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)
    * 129,转换成二进制就是10000001,
    * 结果10000001000
    */
    public static void left_transf (){
    System.out.print("129左移3位"<<"操作结果为:");
    System.out.println(i<<3);
    }

    /**
    * “>>” 有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.
    * 129,转换成二进制就是10000001,
    * 结果10000
    */
    public static void right_transf (){
    System.out.print("129右移3位">>"操作结果为:");
    System.out.println(i>>3); //16
    }

    /**
    * “>>>” "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.
    * 129,转换成二进制就是10000001,
    * 结果10000
    */
    public static void right_noCode_transf (){
    System.out.println("129右移3位">>>"操作结果为:");

    System.out.println(Integer.toBinaryString(i));//10000001
    System.out.println(Integer.toBinaryString(i>>>3));//10000
    System.out.println(i>>>3);//16
    }

    public static int i = 129 ;
    public static int j = 128 ;
    public static void main(String[] args) {

    and();
    or();
    no();
    no_or();
    left_transf();
    right_transf();
    right_noCode_transf();
    }
    }
  • 相关阅读:
    react 之 ref
    再看redux
    localtunnel内网服务器暴露至公网
    Relay GraphQL理解
    微信小程序
    React Router
    webpack
    Redux
    bootstrap
    jQuery中.bind() .live() .delegate() .on()区别
  • 原文地址:https://www.cnblogs.com/heshana/p/13444188.html
Copyright © 2011-2022 走看看