Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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 32位机器上64位变量算术运算的行为_Java_Cpu_32bit 64bit - Fatal编程技术网

Java 32位机器上64位变量算术运算的行为

Java 32位机器上64位变量算术运算的行为,java,cpu,32bit-64bit,Java,Cpu,32bit 64bit,在算术运算的情况下,CPU周期将如何运行? 类似于两个64位整数的加法 编辑: 我们可以在32位机器中使用64位变量吗?--当然是的,在提出问题的时候我很困惑,所以现在编辑这个。是的,例如,一个javalong是一个64位2的补码整数。CPU周期将因处理器芯片组和不同的JDK/JRE实现而有所不同,但显然,它的周期将比64位机器的周期更多。我建议您在目标硬件和JDK/JRE上进行实验。是的,当然可以。除非你有一个令人信服的案例,你通过这个发现了性能问题(可能性很小),否则CPU周期行为并不重要。

在算术运算的情况下,CPU周期将如何运行? 类似于两个64位整数的加法

编辑:


我们可以在32位机器中使用64位变量吗?--当然是的,在提出问题的时候我很困惑,所以现在编辑这个。

是的,例如,一个java
long
是一个64位2的补码整数。CPU周期将因处理器芯片组和不同的JDK/JRE实现而有所不同,但显然,它的周期将比64位机器的周期更多。我建议您在目标硬件和JDK/JRE上进行实验。

是的,当然可以。除非你有一个令人信服的案例,你通过这个发现了性能问题(可能性很小),否则CPU周期行为并不重要。+1加法大约是2x,乘法大约是4x,除法速度慢得多,并且根据CPU的不同而不同。谢谢@PeterLawrey基本上我是从单词撕裂的角度考虑的,就像在java中一样,如果我在多线程环境中的32位操作系统上添加2个长(64位)整数变量,则atmoic操作的可能性为1位或32位将在一个atmoic操作中操作?@user2922515这可能取决于处理器。在x86系统上,很难找到真正的32位处理器,即不能执行64位操作的处理器。如果您使用的是较旧的ARM处理器,它们没有定义良好的内存模型,我认为这可能是一个问题。Java并不总是将64位操作指定为原子操作,但在x86系统上却是如此。@PeterLawrey这是否意味着Java没有指定某些64位操作是否为原子操作?如果我们想保证原子操作,那么我们需要使用Atmoic类。@Vipin在64位JVM上的读写是原子的,但不是读写。对于更复杂的原子操作,需要AtomicLong类。