java byte数组位运算 为什么 & 0xff

 

java 中 当 比int型 位数小 的 char ,byte 在进行位运算时都会被扩展成int 型来运算;

byte b=-64

-64 的原码  11000000     

反码  10111111     

 补码  11000000b的整型值在扩展时最左边一位是符号位1,扩展后就是11111111 11000000

0xff 的值是00000000 11111111

b & 0xff 的结果是00000000 11000000

 

 

       11111111 11000000

 &    00000000 11111111

————————————

       00000000 11000000

 

这就是为 保护结果都只会得到最后的八位 为byte 型

参与运算的是int型 但是结果我们需要的是byte的 

 

ret[i] = (byte)(data[i] & 0xFF);

 

 这在进行图片处理中是必要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值