位运算 java 笔记

package ice.snowflake.test;

import java.util.logging.Logger;

//https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Expressions_and_Operators
public class BitwiseOperatorTest {
    static Logger log = Logger.getLogger(BitwiseOperatorTest.class.getName());

    public static void main(String[] args) {
        Integer a = 15;
        Integer b = 9;
        Integer c = -10;
        Integer d = Integer.MAX_VALUE;
        Integer e = Integer.MIN_VALUE;

        p("非逻辑运算");
        p(Integer.toBinaryString(a) + "  正整数a的2进制值");                                                   //1111
        p(Integer.toBinaryString(~a) + "  正整数a进行非运算后的2进制值,首位符号位变成了1,变成了负整数");    //11111111111111111111111111110000
        p(Integer.toBinaryString(c) + "  负整数c的2进制值,以补码的方式表示");                                    //11111111111111111111111111110110
        p(Integer.toBinaryString(~c) + "  负整数c进行非运算后的2进制值,首位符号位变成了0,变成了正整数");       //1001
        p("两个正数逻辑操作——————————————————————————");
        p(Integer.toBinaryString(a) + "  正整数a的2进制值");         //1111
        p(Integer.toBinaryString(b) + "  正整数b的2进制值");        //1001
        p(Integer.toBinaryString(a & b) + " &   两个整数与");      //1001 与,两者都为则返回1
        p(Integer.toBinaryString(a | b) + " |   两个整数或");      //1111  或,有一个为1,则返回1
        p(Integer.toBinaryString(a ^ b) + " ^   两个整数异或");    //110  异或,两者不一样则返回1
        p("两个不同符号数逻辑操作——————————————————————————");
        p(Integer.toBinaryString(a) + " 正整数a的2进制值");               //1111 正整数a的2进制值
        p("0000000000000000000000000000" + Integer.toBinaryString(a)
                + " 正整数a的2进制值,左侧补满0,好比较");                     //00000000000000000000000000001111 正整数a的2进制值,左侧补满0,好比较
        p(Integer.toBinaryString(c) + " 负整数c的2进制值");              //11111111111111111111111111110110 负整数c的2进制值
        p(Integer.toBinaryString(a & c) + " &   与");                 //110 &   与
        p(Integer.toBinaryString(a | c) + " |   或");                 //11111111111111111111111111111111 |   或
        p(Integer.toBinaryString(a ^ c) + " ^   异或");               //11111111111111111111111111111001 ^   异或

        p("移位运算");
        p("正整数——————————————————————————");
        p(Integer.toBinaryString(d) + " 正整数d");                             //1111111111111111111111111111111 正整数d
        p("0"+Integer.toBinaryString(d) + " 正整数d,补充左侧符号位");        //01111111111111111111111111111111 正整数d,补充左侧符号位
        p(Integer.toBinaryString(d >> 2) + " 正整数右移两位");             //11111111111111111111111111111 正整数右移两位
        p(Integer.toBinaryString(d >>> 2) + " 正整数无符号右移两位");      //11111111111111111111111111111 正整数无符号右移两位
        p(Integer.toBinaryString(d << 2) + " 正整数左移两位");             //11111111111111111111111111111100 正整数左移两位

        p("负整数——————————————————————————");
        p(Integer.toBinaryString(e) + " 负整数e");                         //10000000000000000000000000000000 负整数e
        p(Integer.toBinaryString(e >> 2) + " 负整数右移两位");         //11100000000000000000000000000000 负整数右移两位
        p(Integer.toBinaryString(e >>> 2) + " 负整数无符号右移两位"); //100000000000000000000000000000 负整数无符号右移两位
        p(Integer.toBinaryString(e << 2) + " 负整数左移两位");         //0 负整数左移两位
    }

    public static void p(Object msg) {
        System.out.println(msg);
    }
/*    public static void p(String msg){
        log.info(msg);
    }*/
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值