private static int sum(ByteBuffer bb) {
int sum = 0;
while (bb.hasRemaining()) {
if ((sum & 1) != 0)
sum = (sum >> 1) + 0x8000;
else
sum >>= 1;
sum += bb.get() & 0xff;
sum &= 0xffff;
}
return sum;
}
请问这段代码什么意思他完成了什么功能,为什么要这样?
sum = (sum >> 1) + 0x8000;是什么意思,为什么要在右移之后+0x8000?0x8000代表什么?
同理0xff和0xffff各有什么意义?
多谢高手指教?!?!
int sum = 0;
while (bb.hasRemaining()) {
if ((sum & 1) != 0)
sum = (sum >> 1) + 0x8000;
else
sum >>= 1;
sum += bb.get() & 0xff;
sum &= 0xffff;
}
return sum;
}
请问这段代码什么意思他完成了什么功能,为什么要这样?
sum = (sum >> 1) + 0x8000;是什么意思,为什么要在右移之后+0x8000?0x8000代表什么?
同理0xff和0xffff各有什么意义?
多谢高手指教?!?!
这跟算法本身有很大关系,这样的问题似乎很难回答,因为任何人都可以定义一个常量为0x8000,谁知道代表的是什么
楼主还是研究一下吧