Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中避免符号扩展位掩码?_Java_Unsigned_Signed_Bitmask - Fatal编程技术网

如何在Java中避免符号扩展位掩码?

如何在Java中避免符号扩展位掩码?,java,unsigned,signed,bitmask,Java,Unsigned,Signed,Bitmask,我的位掩码是字节,我希望它们保持原样,但我认为它们是符号扩展的。我不在乎字节是正数还是负数,只要它设置了相同的位。我只是花了几个小时调试我的代码,然后我发现我的字节位掩码只有一个问题,当它们碰巧是负数时,我花了一段时间才发现。我不可能是唯一一个对此有问题的人。有没有一种方法可以使字节表现为无符号的?如果在算术(或按位)运算符中使用某个字节时不希望该字节进行符号扩展,则需要显式地按位和0xFF。它看起来有点难看,但是如果你有一个字节,它是不可避免的(希望一个好的JIT能够识别这个习惯用法并从中生成

我的位掩码是字节,我希望它们保持原样,但我认为它们是符号扩展的。我不在乎字节是正数还是负数,只要它设置了相同的位。我只是花了几个小时调试我的代码,然后我发现我的字节位掩码只有一个问题,当它们碰巧是负数时,我花了一段时间才发现。我不可能是唯一一个对此有问题的人。有没有一种方法可以使字节表现为无符号的?

如果在算术(或按位)运算符中使用某个字节时不希望该字节进行符号扩展,则需要显式地按位和0xFF。它看起来有点难看,但是如果你有一个
字节,它是不可避免的(希望一个好的JIT能够识别这个习惯用法并从中生成高效的代码)。

你的代码有正确的转换吗?您是否使用'>>'而不是'>>'?这是你的问题

您可以使用更大的整数类型。您可能应该发布有问题的代码。是的,我使用>>,所以您说我应该使用>>>?我会检查的。我想这是我必须做的。