• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:Java中的

java 搞代码 3年前 (2022-01-27) 34次浏览 已收录 0个评论

前言
咱们都晓得对于有符号数据类型,二进制最左端的数字为符号位,0代表正,1代表负,这里先介绍几个概念

逻辑左移=算术左移:高位溢出,低位补0
逻辑右移:低位溢出,高位补0
算术右移:低位溢出,高位用符号位的值补

比方一个有符号位的8位二进制数10101010,[]是增加的数字

逻辑左移一位:0101010[0]
逻辑左移两位:101010[00]

算术左移一位:0101010[0]
算术左移两位:101010[00]

逻辑右移一位:[0]1010101
逻辑右移两位:[00]101010

算术右移一位:[1]1010101
算术右移两位:[11]101010

算术左移和算术右移次要用来进行有符号数的倍增、减半
逻辑左移和逻辑右移次要用来进行无符号数的倍增、减半
(Java中是没有无符号数据类型的,C和C++中有)

符号 例子 解释
<< num<< n 相当于 num×2n,算数左移(逻辑左移)

num>>n 相当于num2n,算数右移

num>>>n 逻辑右移,当num为负数和算术右移一个效

  @Test
    public void test1() {
      //  System.out.println(1<<1);
      //  System.out.println((float) (1>>1));
        int num = 10;
        System.out.println(Integer.toBinaryString(0));
        System.out.println(Integer.toBinaryString(1));
        System.out.println(Integer.toBinaryString(2));
        System.out.println(Integer.toBinaryString(3));
        System.out.println(Integer.toBinaryString(4));
        System.out.println(Integer.toBinaryString(5));
        System.out.println(Integer.toBinaryString(100));
        System.out.println("-------------");
        //System.out.println(Integer.toBinaryString(6));
        System.out.println(Integer.toBinaryString(8));
        System.out.println(Integer.toBinaryString(16));
        System.out.println(Integer.toBinaryString(13));
        System.out.println(Integer.toBinaryString(~13));
        System.out.println("-------------");
        System.out.println(Integer.toBinaryString(num));
        System.out.println(Integer.toBinaryString(num << 1));
        System.out.println(Integer.toBinaryString(num>>1));
        System.out.println(Integer.toBinaryString(num>>2));
        System.out.println(Integer.toBinaryString(num>>4));

        System.out.println("---------------");
        System.out.println(Integer.toBinaryString(2 & 3));
        System.out.println(Integer.toBinaryString(2 | 3));
        System.out.println(Integer.toBinaryString(~2));
        System.out.println(Integer.toBinaryString(~3));

        System.out.println("---------------");

        System.out.println(200 & ~200);

        System.out.println("---------------");

        //   无符号右移运算符>>> 只是对32位和64位的值有意义
        System.out.println(Integer.toBinaryString(~2>>>4));
        System.out.println(Integer.toBinaryString(~2>>>33));


        // 20
        System.out.println(10 << 1);
        // -20
        System.out.println(-10 << 1);
        // 5
        System.out.println(10 >> 1);
        // -5
        System.out.println(-10 >> 1);
        // 5
        System.out.println(10 >>> 1);
        // 2147483643
        System.out.println(-10 >>> 1);

//        result:

//        0
//        1
//        10
//        11
//        100
//        101
//        1100100
//                -------------
//                1000
//        10000
//        1101
//        11111111111111111111111111110010
//                -------------
//                1010
//        10100
//        101
//        10
//        0
//                ---------------
//                10
//        11
//        11111111111111111111111111111101
//        11111111111111111111111111111100
//                ---------------
//                0
//                        ---------------
//                1111111111111111111111111111
//        1111111111111111111111111111110
//        20
//                -20
//        5
//                -5
//        5
//        2147483643
    }

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:Java中的

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址