【算法与数据结构】位运算

1.输入一个数字,显示数字在机器中的32位二进制存储结构

    /**
     * 打印方法
     * @param number 入参
     */
    private static void print(int number) {
        for (int i = 31; i >= 0; i--) {
            System.out.print((number & (1 << i)) == 0 ? "0" : "1");
        }
        System.out.println();
    }

2.显示一个数的正32位和负的32位二进制

public static void main(String[] args) {
        System.out.println("+++++++++++++++++++++++ 位运算 ++++++++++++++++++++++++++++");
        System.out.println("1.正数的32位进制及取反:");
        int num = 325;
        print(num);
        int num2 = -num;
        print(num2);
        int num3 = (~num + 1);
        print(num3);
        System.out.println("2.负数的32位进制及取反:");
        int var = -10;
        print(var);
        int var1 = -var;
        print(var1);
        int var2 = (~var + 1);
        print(var2);
        System.out.println("总结:");
        System.out.println("1.最高位为符号位,0代表正数,1代表负数");
        System.out.println("2.不管是正数还是负数取相反数,二进制都是取相反数加1");
    }

3.符号位,左移:<<    右移:>>   无符号右移:>>>

/**
     * 符号位:
     *      左移:<<
     *      右移:>>
     *      无符号右移:>>>
     */
    private static void test2() {
        System.out.println("++++++++++++++++++++ 位运算 ++++++++++++++++++++++++++++");
        System.out.println("1.右移:");
        int number = 8;
        // 原始值
        print(number);
        // 右移1位
        print(number << 1);
        // 右移2位
        print(number << 2);
        System.out.println("2.左移:");
        int var = 8;
        // 原始值
        print(var);
        // 左移1位
        print(var >> 1);
        // 左移2位
        print(var >> 2);
        System.out.println("3.左移,右移,无符号右移:");
        int var1 = -8;
        print(var1);
        print(var1 << 1);
        print(var1 >> 1);
        print(var1 >>> 1);
    }



运行结果:
+++++++++++++++++++++++ 位运算 ++++++++++++++++++++++++++++
1.右移:
00000000000000000000000000001000
00000000000000000000000000010000
00000000000000000000000000100000
2.左移:
00000000000000000000000000001000
00000000000000000000000000000100
00000000000000000000000000000010
3.左移,右移,无符号右移:
11111111111111111111111111111000
11111111111111111111111111110000
11111111111111111111111111111100
01111111111111111111111111111100

4.总结:

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值