Java - 在同一步骤中获得商和余数?

Java - get the quotient and remainder in the same step?

似乎要在 Java 中找到除法的商和余数,必须这样做:

int a = ...
int b = ...

int quotient = a / b;
int remainder = a % b;

有没有办法这样写,使商和余数在一步(一次除法运算)中找到?还是 Java 已经自动优化了这段代码?

无法一步完成,因为两者是不同的操作。一种是除法,另一种是余数。所以你需要两个变量来存储两个操作的结果。

public int []result (int a , int b){
int quotient = a / b;
int remainder = a % b;
int [] array=new int[2];
array[0]=quotient;
array[1]=remainder;
return array;
}

public void main(){

int a=..;
int b=...;

int [] results=result(a,b);
}

所有体系结构的自然行为是除法指令在单独的寄存器(对于二进制)或存储区域(对于 IBM zSeries 上的压缩十进制)中提供商和余数。我所知道的唯一具有相同功能的高级语言是 COBOL。必须再次重复除法指令以获得余数似乎总是很浪费。

如果您需要这样做,

int a = ...
int b = ...

int quotient = a / b;
int remainder = b - (a * b);

用得稍微少一点CPU,但除非你经常这样做,否则里面的东西不多。这样做 10 亿次,第一次需要 5.3 秒,第二次需要 3.8 秒。我的测试中也有一个 FOR 循环。