将最大的二进制数(按二进制位数)转换为十进制

问题描述 投票:0回答:1

给定多个字符,我想生成其二进制表示适合该字符数的最大整数。

我的代码运行得很好:

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。我猜想转换为文本会使其变得缓慢。我怎样才能让它运行得更快?

javascript function performance loops binary
1个回答
2
投票

这是使用位运算符的问题:

const getValueOf = y => (1<<y)-1;

例如,如果

y
为 4,则将 1 位向左移动四次,即二进制为 10000,然后减去 1,即二进制为 1111。

© www.soinside.com 2019 - 2024. All rights reserved.