[Java] 位操作

Java中的位操作及强制类型转换

进制表示

Java中提供了表示8,16进制的方法

        int a=0b11;
        int b=011;
        int c=0x11;
        char d=0x61;
        System.out.println(a);  //3
        System.out.println(b);  //9
        System.out.println(c);  //17
        System.out.println(d);  //a

位操作—int、byte类型的操作

        byte a = (byte) 1;

        byte b = (byte) 1;
        int c = 1;

        int number1 = ((b << 8) & 0xffff) | a;
        int number2 = (c << 8) & 0xff;
        int number3 = (c << 2) & 0xff;

        System.out.println(number1); //257
        System.out.println(number2);    //0
        System.out.println(number3);    //4
  • 可以看出,byte与int都可以进行位操作,位操作的返回值是int(若不足32位前面补0)
  • 通过number2与number3的运算结果可以看出,当两个不同bit位的数进行位操作时,会取较短bit位作为输出的bit位数。

byte与int的强制类型转换

int转byte,舍弃部分位

        int value = 97 + 256 * 98;
        byte b = (byte) value;
        System.out.println((char) b);   //a--97
        byte c = (byte) (value >> 8);
        System.out.println((char) c);   //b--98
  • 可以看出,int转byte时会将低8位转为byte

byte转int,补充部分位

这里写图片描述

  • 从中可以看出,在位扩展时,采用符号扩展,即扩展位于扩展前的符号位相同

猜你喜欢

转载自blog.csdn.net/eternally123/article/details/80246774
今日推荐