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,补充部分位
- 从中可以看出,在位扩展时,采用符号扩展,即扩展位于扩展前的符号位相同