[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,补充部分位

这里写图片描述

  • 从中可以看出,在位扩展时,采用符号扩展,即扩展位于扩展前的符号位相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值