执行模运算的其他方式

发布于 2024-11-18 12:44:24 字数 76 浏览 2 评论 0原文

前段时间我在某处看到了使用位运算符执行模运算的技巧。但现在我无法以任何方式执行正确的操作。有人知道该怎么做吗?据我记得它比使用 % 更快。

Some time ago I've seen somewhere a trick to perform modulo operation using bit operators. But now I cannot in any way perform proper operation. Anyone knows how to do it ? From what I remember it was faster than using %.

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

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

发布评论

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

评论(2

人│生佛魔见 2024-11-25 12:44:24

“技巧”是将一个值与 1 进行二进制 AND。任何奇数都必须将第一位设置为 1。

因此,

var foo = 7;

if( foo & 1 ) { // true
}

使用按位 AND 在几乎所有平台/浏览器中都有更好的性能。

for(var loop = 0; loop < 10; loop++) {
    if( loop & 1 ) {
        console.log('I am ', loop, ' and I am odd!');
    }
}

The "trick" is to binary AND a value with 1. Any odd number must have the first bit set to 1.

So

var foo = 7;

if( foo & 1 ) { // true
}

Using a bitwise AND has a better performance in almost all platforms / browsers.

for(var loop = 0; loop < 10; loop++) {
    if( loop & 1 ) {
        console.log('I am ', loop, ' and I am odd!');
    }
}
糖果控 2024-11-25 12:44:24

您可以通过将您的值与 (2^k)-1 进行 AND 运算来进行 2^k(2 的幂)的模运算。

You can do the modulo of 2^k (a power of 2) by ANDing your value with (2^k)-1.

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