2个int 整除并求余 有没有一个高效算法。

leehong0704 2012-10-24 07:32:20
int a,b;
int c=a/b;
int d=a%b;
只能这样吗?
2个int 整除并求余 有没有一个高效算法。
...全文
341 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

这样的简单计算还不算高效,那什么样的才算高效呢?
JAVA未提供一次就同时算出商和余数的语言支持。

我就是一次算出商和余数
[/Quote]
怎么一次算出的?
龙四 2012-10-26
  • 打赏
  • 举报
回复
这都碰到效率问题了?
leehong0704 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

这样的简单计算还不算高效,那什么样的才算高效呢?
JAVA未提供一次就同时算出商和余数的语言支持。
[/Quote]
我就是一次算出商和余数
hbwhwang 2012-10-25
  • 打赏
  • 举报
回复
这样的简单计算还不算高效,那什么样的才算高效呢?
JAVA未提供一次就同时算出商和余数的语言支持。
dracularking 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个算法已经非常非常高效了,是CPU指令所直接支持的。

如果还企图找更高效的算法,除非 b 是特殊数字,比如当 b = 4 的时候
那么可以用位运算(比除法和取余速度高很多):
int c = a >> 2;
int d = a & 0x3;
[/Quote]
是啊 泛化一下就是
x % 2^n == x & (2^n - 1)

只有在右操作数是2的次幂的情形下

不过我觉得对这种类型的操作现在的java编译器应该会有优化吧,没查证过。
桃园闲人 2012-10-25
  • 打赏
  • 举报
回复
brightyq 2012-10-25
  • 打赏
  • 举报
回复
楼主的程序遇到效率问题了吗?如果是,那瓶颈不在这,不用纠结这个.
这样的运算在一般项目不会考虑效率问题的,已经很快了.
MiceRice 2012-10-25
  • 打赏
  • 举报
回复
这个算法已经非常非常高效了,是CPU指令所直接支持的。

如果还企图找更高效的算法,除非 b 是特殊数字,比如当 b = 4 的时候
那么可以用位运算(比除法和取余速度高很多):
int c = a >> 2;
int d = a & 0x3;
zhaoming262350 2012-10-24
  • 打赏
  • 举报
回复
我认为这样就行了,不过要注意b!=0,否则会出现异常

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧