我正在使用短类型变量在 Java 中编写代码。短变量通常是 16 位,但不幸的是 Java 没有无符号原始类型,所以我使用低 15 位而不是忽略符号位。请不要建议对这部分进行更改,因为我在这个实现中已经很远了......这是我的问题:
我有一个需要异或的变量。
在 C++ 中我只会写
myunsignedshort = myunsignedshort ^ 0x2000;
0x2000 (hex) = 0010000000000000 (binary)
但是,在 Java 中,我还必须处理符号位,所以我试图更改我的掩码,以便它不会影响 xor ...
mysignedshort = mysignedshort ^ 0xA000;
0xA000 (hex) = 1010000000000000 (binary)
这没有达到预期的效果,我不知道为什么。任何人都可以看到我要去哪里错了吗?
问候。
编辑:好的,你们是对的,那一点没有引起问题。
当我向左移动位时,问题就出现了。
我不小心将位移入符号位。
mysignedshort = mysignedshort << 1;
任何想法如何避免这个新问题,以便如果它转移到 MSB 则什么都不会发生?还是我应该做一个手动测试?虽然代码中有很多这种变化,所以我更喜欢更简洁的解决方案。
问候。