位与0xff 和位或0x00 得到的结果为什么不同

2022-08-16 科技 83阅读
(byte)-1 参与运算时会转换为int,其二进制形式为-1的补码,即32个1。由于32位中的高16位并不会影响结果,所以我们仅仅对低16位来分析。
(byte)-1 & 0xff => 1111111111111111 & 0000000011111111 => 0000000011111111 => 255
(byte)-1 | 0x00 => 1111111111111111 | 0000000000000000 => 1111111111111111 => -1
由于java默认整数类型为int,所以结果会出现超过byte范围的数。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com