gpt4 book ai didi

javascript - 位操作设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:49 24 4
gpt4 key购买 nike

我正在创建一个插件。我有一组不同类型的记录值。因此,可以说,对于每条记录,我都有以下数据

  • 类型:值
  • A:a1
  • 乙:b1
  • C : c1
  • D : d1

现在,对于每条记录,我想保留一个应用数组 -

  • 类型:应用
  • 答:正确
  • 乙:假
  • C:正确
  • D:正确

现在,我对应用数组中 A、B、C、D 的所有值进行 &&,并根据最终 AND 的真/假判断记录是否有效。

现在,我不想为这样的事情保留和排列。我想用 0/1 值保留 4 位,并使用“&”使用按位运算,这样会更快。我想知道如何实现这样的事情? n 位变量会是什么样子。

我正在创建一个插件,所以我不会提前知道是否会有 4 个这样的类型。可以有任何 'n' 个这样的类型 (n < 32),所以我必须保留 n 个这样的位。

这是目前的想法

  1. 我将保留值为 0 的整数变量。(所有位均为 0最初)我不知道如何保留 32 位/n 位的整数。
  2. 我会记录我有多少种类型
  3. 要设置为 true,我必须以某种方式将第 i 位设置为 1,或者如果我必须将其设置为 false,则为 0。我不知道该怎么做。
  4. 要找到 AND,我会在那些中找到等于 0 的第一位n 位。如果有 0,我的最终值为 0,否则为 1。

语言 - javascript/jquery

任何只有函数签名的例子都会有帮助

最佳答案

I will keep and integer variable with value = 0. (all bits will be 0 initially) I dont know how to keep and integer with 32 bits / n bits.

JavaScript 没有整数类型,但是 Number type 保证能够表示从 −2³¹ 到 2³¹−1 的任何整数。您可以使用 bitwise operatorsNumber就好像它们是 32 位有符号整数。

To set to true, somehow I will have to go and set i-th bit to 1, or to 0 if I have to set it to false. I dont know how to do that.

为了设置i -x 的第一位1 这样做:

x |= (1 << i)

为了设置i -x 的第一位到 0 这样做:

x &= ~(1 << i)

To find AND, I will find the first bit which is equal to 0 in those n bits. If there is a 0, my final value is 0, else its 1.

有一种更简单的方法来检查整数是否为 x等于 n二进制的。

var isAllOnes = x === (1 << n) - 1;

n == 8 的示例:

(1 << n)是 256,或 100000000二进制(一个和 8 个零)。

(1 << n) - 1是 255,或 11111111二进制(8 个)。

关于javascript - 位操作设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41624631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com