给定多个字符,我想生成其二进制表示适合该字符数的最大整数。
我的代码运行得很好:
const getValueOf=(y)=>{return parseInt('1'.repeat(y),2)};
/*
| Chars | Binary | Decimal
| 4 | 1111 | 15
*/
console.log(getValueOf(4)); // = 15
/*
| Chars | Binary | Decimal
| 10 | 1111111111 | 1023
*/
console.log(getValueOf(10)); // = 1023
/* -------------- */
console.time('Time spent on 10000000 executions');
for(let z=0;z<10000000;++z){getValueOf(10)};
console.timeEnd('Time spent on 10000000 executions')
但是,这对于我的目的来说太慢了。对于 10000000 次执行,大约需要 666ms。我猜想转换为文本会使其变得缓慢。我怎样才能让它运行得更快?
这是使用位运算符的问题:
const getValueOf = y => (1<<y)-1;
例如,如果
y
为 4,则将 1 位向左移动四次,即二进制为 10000,然后减去 1,即二进制为 1111。