最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Other ways of performing modulo operation - Stack Overflow

programmeradmin4浏览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 %.

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 %.

Share Improve this question edited Jun 26, 2013 at 20:17 user1228 asked Jul 4, 2011 at 14:17 DevAno1DevAno1 3931 gold badge8 silver badges19 bronze badges 2
  • en.wikipedia/wiki/Modulo_operation#Performance_issues - for powers of 2. – Tomasz Nurkiewicz Commented Jul 4, 2011 at 14:22
  • Nice question, I checked here: jsperf./js-modulo and the answers down seem good! – TTT Commented Jan 7, 2013 at 21:54
Add a ment  | 

2 Answers 2

Reset to default 10

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!');
    }
}

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

发布评论

评论列表(0)

  1. 暂无评论