如何摆脱除法运算符?

发布于 2024-12-22 17:38:21 字数 173 浏览 1 评论 0原文

我应该写什么才能摆脱除法运算符,而不是写“/6”?

int a ;
c =  a / 6 ;

如果您对这个主题了解更多,您能给我当 b != 2 的倍数时的通用算法吗?

例如:

b = 1, 3, 5, 6, 7, 9, 10 等

Instead of writing " / 6 ", what should I write so that I can get rid of division operator ?

int a ;
c =  a / 6 ;

If you know more on that topic, can you give me general algorithm when b != multiple of 2 ?

ex :

b = 1, 3, 5, 6, 7, 9, 10 , etc

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耀眼的星火 2024-12-29 17:38:21

好吧,移位和减法(将 / 替换为 >> 和可选的 - 的一般形式,通常用于 power-of -2 除数)是 int 的除法运算,所以我不确定您应该如何消除它。如果他们说用模数(%)替换它,我会发现他们很难认真对待。对于 floatdouble,您可以尝试乘以倒数(这会将除法移到编译时而不是运行时),只要您不丢失精度太高,但是对于不采用定点表示的整数类型来说,这会更棘手。

Well, shift-and-subtract (the general form of replacing / with >> and optionally -, commonly seen for power-of-2 divisors) is what the division operation does for an int, so I'm not sure how you'd be expected to eliminate it. If they say to replace it with modulus (%), I'd find them hard to take seriously. For float or double, you could try multiplication by the reciprocal (which moves the division into compile-time instead of run-time), so long as you don't lose too much precision, but that's trickier for integral types without resorting to fixed point representation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文