javascript - 如何在 JavaScript 中将位组合成更大的整数

标签 javascript bit-manipulation

想知道将一组较小的位转换为较大的位的理想方法是什么。例如,这些具体案例:

  • 3 个 8 位数字到 1 个 24 位数字。
  • 2 个 16 位数字转换为 1 个 32 位数字。

想知道通用技术是什么,以便我可以将其应用于任何数字。如果它只适用于 8 的倍数,那就没问题,但理想情况下它也能够处理这些情况。

  • 3 个 7 位数字到 1 个 21 位数字。
  • 9 个 3 位数字到 1 个 27 位数字。

我以为你只是添加它们,但听起来有一种可以移动它们的技术,我不确定它一般是如何工作的。

最佳答案

我认为“转换”的意思是“连接”这些位。

以下是如何使用 Shift 来做到这一点:

var int1 = 23; // "8 bit" number, stored in integer variable
var int2 = 67; // another one
var int3 = 189; // a third
var concatInt = ( int1 << 16 ) + ( int2 << 8 ) + int3;

这里,“concatInt”的值是3个数字[int1][int2][int3]的按位连接

当然,您可以使用任何数字和任何位来执行此操作,只要适合 32 位整数即可。

这里有更多相关内容: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

关于javascript - 如何在 JavaScript 中将位组合成更大的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095350/

相关文章:

javascript - KineticJS 如何从图层获取颜色(来自图层的颜色选择器)

java - 不能使用 == 代替一元 & 来检查两个值是否相等

java - 在 Java 中更改 32 位整数的特定位

c - 填充可变数量的

c# - 计算 64 位(长,大)整数中的位数?

javascript - parse.com javascript 中的用户安全

javascript - 如何检测 Facebook 应用程序中何时加载 DOM 和框架?

javascript - 尝试从传单地理编码器返回纬度和经度值

javascript - 创建一个人为缓慢的 Javascript 环境?

c - 为什么 ~b=-6 如果 b=5?