Java中0xff的作用(byte&0xff)

近几日研究加密算法,对于代码中byte&0xff甚是不解,于是乎查阅资料,下边以最简洁的理解记录之。


在Java中int类型的变量声明为十六进制的形式比如:
例如:0xff表示十进制255(十六进制方式,格式为0x打头)

具体来说,0xff 是计算机十六进制的表示: 0x就是代表十六进制,A B C D E F 分别代表10 11 12 13 14 15 , F就是15 . 一个F 代表4位二进制:可以看做 是 8 4 2 1。

0xff的二进制表示就是:1111 1111。 高24位补0:0000 0000 0000 0000 0000 0000 1111 1111;
byte类型的数字要&0xff再赋值给int类型,其本质原因就是想保持二进制补码的一致性。

当byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff可以将高的24位置为0,低8位保持原样。这样做的目的就是为了保证二进制数据的一致性。


简而言之,三句话概括
first ,oxff默认为整形,二进制位最低8位是1111 1111,前面24位都是0;

second,&运算: 如果2个bit都是1,则得1,否则得0;

third,byte的8位和0xff进行&运算后,最低8位中,原来为1的还是1,原来为0的还是0,而0xff其他位都是0,所以&后仍然得0,0xff的作用就是把其他位置保持0,这八位不变;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting_Boss_Hao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值