java 0xff00_& 0xFF 与 & 0xFF00 的作用

byte--->char代码是这样的:

c[i] = (char) (b[i] & 0xff)

(b[i]为byte型,c[i]为char型)

觉得与一下0xff没什么用。直接c[i] = (char)b[i]有何异?

如: ((WORD)((((WORD)(wData) >> 8)

& 0xff) | (((WORD)(wData)

<< 8) & 0xff00)))

char c = (char)-1 & 0xFF;char d = (char)-1;

System.out.println((int)c);

System.out.println((int)d);

这样输出是

255

65535

上面代码就是为了避免错误

补充一下:

1)。位运算符只针对4byte的int型

2)。-2的byte类型 16进制表示为 FE(2取反加1)

3)。-2 & 0xFF运算:

实际-2带符合bit-wise成int,即FE会变成FFFFFFFE(2取反加1), 接着

0xFFFFFFFE & 0x000000FF = 0x 000000FE;

如果不&,就是FFFFFFFE。

1) 位运算不限制为int, long也行的。

2)

3) 负数进行&操作时需要转成补码,-2 的补码是0xFFFFFFFE

因为byte的取值范围是 -128~127,而Char是0~65535

所以需要& 0xFF 使得byte原来的负值变成正的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值