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

java 0xff00_& 0xFF 与 & 0xFF00 的作用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)))charc=(ch…

大家好,又见面了,我是你们的朋友全栈君。

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原来的负值变成正的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150803.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号