Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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_Bit Manipulation_Bitwise Operators_Modulo_Modulus - Fatal编程技术网

Java 大数奇偶校验:模运算符与位运算符

Java 大数奇偶校验:模运算符与位运算符,java,bit-manipulation,bitwise-operators,modulo,modulus,Java,Bit Manipulation,Bitwise Operators,Modulo,Modulus,我读过,但它似乎没有完全回答这个问题 对于大数,使用按位and运算,n&1==0,比使用模运算,n%2==0更有效地确定数字的奇偶校验(无论是偶数还是奇数) 随着Java9在短短几个月内面世,我们将有机会使用新的微基准测试工具,这些工具可能为这个问题提供明确的答案 我想这会有好处,但我不知道这是否值得注意 我目前的假设也让我相信编译器可能会优化模运算符,以使用按位and运算符,但我很好奇这是不是真的。在当前情况下,使用更容易理解的运算符。即使存在差异(我不认为这一点——两个操作在现代CPU上使用

我读过,但它似乎没有完全回答这个问题

对于大数,使用按位and运算,
n&1==0
,比使用模运算,
n%2==0
更有效地确定数字的奇偶校验(无论是偶数还是奇数)

随着Java9在短短几个月内面世,我们将有机会使用新的微基准测试工具,这些工具可能为这个问题提供明确的答案

我想这会有好处,但我不知道这是否值得注意


我目前的假设也让我相信编译器可能会优化模运算符,以使用按位and运算符,但我很好奇这是不是真的。

在当前情况下,使用更容易理解的运算符。即使存在差异(我不认为这一点——两个操作在现代CPU上使用相同的时间),也可以忽略不计。可能存在差异,具体取决于具体的优化。如果编译器没有针对
n%2==0
的特定模式,并且仅依赖于优化
n%2
,则在这种情况下,它无法将其重写为
n&1
。当然,这仍然不是一个实际的划分,所以不会那么慢。但它可以合理地比
n&1
慢。我也不认为有任何合理的理由去写
n%2==0
,因为它永远比
n&1==0
更清晰。