【发布时间】:2014-04-16 16:19:14
【问题描述】:
我试图隔离两个相邻的字节并添加它们,但似乎有时会出现一个额外的位,我不知道如何摆脱它。它正在抛出答案。 代码是:
(acc & 0x00000000ff000000L) + ((acc << 8) & 0x00000000ff000000L);
我得到了诸如
之类的结果0x0000000147000000
应该是什么时候
0x0000000047000000
我怎样才能摆脱 1?
编辑:acc 很长。我尝试添加第 5 和第 6 字节,然后该值将在第 5 字节位置进入新的 long。
【问题讨论】:
-
你能澄清一下吗?
acc的值和类型是什么?0000000147000000是什么?你的意思是十进制值147000000? -
Java 中的一切都是用 int 完成的。如果你位移一个字节,你就是位移一个 int。您是否考虑到这一点?
-
最好有一个可重现的例子。
-
该代码确实将第 5 和第 6 个字节相加(如果从 msb 计算),显然结果大于 255。您可以输入另一个 AND
标签: java byte bit-manipulation