gpt4 book ai didi

java - java 按位或错误

转载 作者:行者123 更新时间:2023-12-02 00:05:42 25 4
gpt4 key购买 nike

变量intVar是原始int,bb[]是字节数组{0x02,0xF7,0x8B,0xF9};

  intVar = bb[0];
//intVar = 00000002
intVar <<= 8;
//intVar = 00000200
intVar |= bb[1];
//intvar = fffffff7

为什么???

最佳答案

原因是符号扩展。使用:

  intVar = 0xFF & bb[0];
//intVar = 00000002
intVar <<= 8;
//intVar = 00000200
intVar |= 0xFF & bb[1];
// intVar = 000002F7

使用负字节(java字节有符号)作为int会产生负int,并且因为java使用二进制补码,所以所有前导位都将为1。使用0xFF将得到最低8位中的字节和 24 个前导 0。

关于java - java 按位或错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com