码迷,mamicode.com
首页 > 编程语言 > 详细

java运算符

时间:2020-08-06 09:32:35      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:java   ash   padding   ext   oid   opera   out   有一个   ali   

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();
}
}

java运算符

标签:java   ash   padding   ext   oid   opera   out   有一个   ali   

原文地址:https://www.cnblogs.com/heshana/p/13444188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!