位运算和进制转换,反码补码

进制转换

package junit;


public class Test {
    public static void main(String[] args) {
//        int a=Integer.MIN_VALUE;
        int b=Integer.MAX_VALUE;
        int c=Integer.MIN_VALUE;
        System.out.println(b);
        System.out.println(c);
        print(b);// 最高位表示 符号位  最高位0 表示正数  最高位为1 表示负数  java中整型的最大值为 2的31次方减1   第32位表示数的正负  0-31位表示数的值
        print(c);
        //~ 运算符 取反
        print(~c);
        print(-5);
        //  11111111111111111111111111111011
/*
* 第32位表示符号位
* 0~31位表示  值
* 将0~31的值 取反之后 加一 最终的值为  十进制
*   1 1111111111111111111111111111011
* ~取反
*   1 0000000000000000000000000000100
*  +1
*   1 0000000000000000000000000000101   表示十进制的5
*   2的1次方 加 2的0次方 加 2的1次方   =2+1+2 =5
* */
        //无符号数值的范围为 0~2的32次方减1  有符号数值的范围为 -2的31次方~2的31次方减1
//        print(a);
        int a=3;
        print(a);
        print(a<<1);//左移1位
        print(a<<2);//左移2位
        /*
         * 运算符或 |
         *  1 | 0   1
         *  1 | 1   1
         *  0 | 0   0
         *  0 | 1   1
         *  有1则1
         * */
        print(11);
        print(22);
        print(11|22);

        /*
         * 运算符 异或 ^
         *  1 ^ 0   1
         *  1 ^ 1   0
         *  0 ^ 0   0
         *  0 ^ 1   1
         *  相同为0
         *  相异为1
         *
         * */
        print(11);
        print(22);
        print(11^22);
        /*
         * 运算符 且 &
         *  1 & 0   0
         *  1 & 1   1
         *  0 & 0   0
         *  0 & 1   0
         *  相同为0
         *  相异为1
         *  两个为1 则1 其余为0
         * */
        print(11);
        print(22);
        print(11&22);

/*
*
* <<  带符号右移
* <<< 不带符号右移
*
*
* */
print(Integer.MIN_VALUE);
print(Integer.MIN_VALUE>>>1);
print(Integer.MIN_VALUE>>1);
/*
* 相反数
*
*
* */
int zz=5;
int zzz=-zz;
int z=(~zz+1);
print(zz);
print(zzz);
print(z);
        System.out.println(zz);
        System.out.println(zzz);
        System.out.println(z);


        print(Integer.MIN_VALUE);
        print(~Integer.MIN_VALUE);
        print(~Integer.MIN_VALUE+1);
        System.out.println("--------");
        System.out.println(Integer.MIN_VALUE);
        System.out.println(~Integer.MIN_VALUE);
        System.out.println(-Integer.MIN_VALUE);
        System.out.println(~Integer.MIN_VALUE+1);
        //选择排序 冒泡排序  插入排序
    }

    /**
     * 将十进制的数 输出为 二进制的数
     * @param num
     */
    public static void print(int num){
        for (int i=31;i>=0;i--){
            System.out.print((num&(1<<i))==0?"0":"1");//左移<<
            // 1左移31位后  为10000000000000000000000000000000  1个1 31个0
            // &运算
/*           1&0 为 0
             1&1 为 1
             0&0 为 0
             0&1 为0       */
        }
        System.out.println();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值