标签: bitarray

是否有任何简单的方法来连接两个BitArray(C#.NET)?

我有

var previous = new BitArray(new bool[]{true});
var current = new BitArray(new bool[]{false});
Run Code Online (Sandbox Code Playgroud)

我想连接它们.我已经尝试过了:

var next = new BitArray(previous.Count + current.Count);
var index = 0;
for(;index < previous.Count; index++)
    next[index] = previous[index];
var j = 0;
for(;index < next.Count; index++, j++)
    next[index] = current[j];
previous = current;
Run Code Online (Sandbox Code Playgroud)

但它看起来不是最好的方法.

.net c# bitarray

8
推荐指数
2
解决办法
6753
查看次数

最有效的方法来颠倒BitArray的顺序?

我一直想知道在C#中反转BitArray顺序的最有效方法是什么.要清楚,我不想通过调用.Not()来反转Bitarray,我想要反转数组中位的顺序.

干杯,克里斯

c# bitarray

8
推荐指数
3
解决办法
1万
查看次数

在位上旋转8x8块中的位的最快方法是什么?

我不确定我正在尝试做什么的确切术语.我有一个存储8x8块,每个字节存储一行.当我完成后,我希望每个字节存储一列.bits8 bytes

例如,当我完成时:

Byte0out = Byte0inBit0 + Byte1inBit0 + Byte2inBit0 + Byte3inBit0 + ...
Byte1out = Byte0inBit1 + Byte1inBit1 + Byte2inBit1 + Byte3inBit1 + ...
Run Code Online (Sandbox Code Playgroud)

C中表现良好的最简单方法是什么?

c embedded transpose matrix bitarray

8
推荐指数
2
解决办法
3951
查看次数

慢按位操作

我正在开发一个Python库,它对长位字符串执行许多按位操作,我想找到一个能够最大化其速度的位串类型.我已经尝试了内置的Python int类型,numpy,bitstringbitarray,而且令人惊讶的是,当涉及到按位操作时,Python int似乎赢了.我用google搜索的所有内容都说numpy对于像这样的矢量化操作要快得多.我是不是以某种方式使用了numpy错误?我可以使用另一个Python库,它实际上改进了Python的内置int类型吗?

from timeit import timeit
import random


size = 10000


def int_to_bits(i):
    result = []
    for _ in range(size):
        result.append(i % 2)
        i >>= 1
    return result



x = random.randrange(2**size)
y = random.randrange(2**size)

print(x.bit_length(), y.bit_length())

x_bits = int_to_bits(x)
y_bits = int_to_bits(y)

t = timeit(
    stmt='a & b',
    setup='a = %d; b = %d' % (x, y)
)
print("raw ints:", t)

t = timeit(
    stmt='a & b',
    setup=('import numpy;'
           'a = numpy.array(%r, dtype=int);' …
Run Code Online (Sandbox Code Playgroud)

python numpy bitwise-operators bitstring bitarray

8
推荐指数
1
解决办法
3787
查看次数

我如何在Python中表示和使用n位向量?

在我正在进行的一项任务中,我们需要使用位向量,但我不确定如何在Python中执行此操作.它们应该能够从4位到20位.我以前从未使用过位向量,但我想可以创建一个使用通常的AND/OR/XOR操作操作的无符号字节数组.

这里的重要限制是:除了标准Python提供的库之外,我不能依赖任何库.

我想我知道如何使用8位无符号字节的数组在C中执行此操作:例如,将零数组的第18位转换为1,我会做类似my_bit_array [3]&= 1 << 2的操作

但由于Python是动态类型的,并且没有内置数组类型,我将如何以pythonic方式执行此操作?

是否有可能(如何?)表达大小为20的位向量?我在考虑制作一个24位/ 3字节向量并忽略4位.

python bit-manipulation bitarray bitvector

7
推荐指数
4
解决办法
1万
查看次数

C/C++位数组或位向量

我正在学习C/C++编程并遇到过"位数组"或"位向量"的用法.我无法理解他们的目的?这是我的疑惑 -

  1. 它们是否用作布尔标志?
  2. 可以使用int数组吗?(当然更多的记忆,但..)
  3. 这个Bit-Masking的概念是什么?
  4. 如果位掩码是简单的位操作以获得适当的标志,那么如何为它们编程?是不是很难在脑袋里做这个操作,看看标志会是什么,与十进制数相对应?

我正在寻找应用程序,以便我能更好地理解.对于Eg -

问:您将获得一个包含范围内的整数(1到1百万)的文件.有一些重复,因此缺少一些数字.找到找到丢失数字的最快方法?

对于上面的问题,我已经阅读了告诉我使用位数组的解决方案.如何将每个整数存储一下?

c c++ bit bitarray bitvector

7
推荐指数
2
解决办法
2万
查看次数

如何提高这个计数程序的性能?

鉴于文件如下所示:

1440927 1
1727557 3
1440927 2
9917156 4
Run Code Online (Sandbox Code Playgroud)

第一个字段是ID in range(0, 200000000).第二个字段代表一种类型,即in range(1, 5).类型1和类型2属于公共类别S1,而类型3和类型4属于公共类别S2.一个ID可能有几个不同类型的记录.该文件大小约为200MB.

问题是计算具有类型1或2的记录的ID的数量,以及具有类型3或4的记录的ID的数量.

我的代码:

def gen(path):
    line_count = 0
    for line in open(path):
        tmp = line.split()
        id = int(tmp[0])
        yield id, int(tmp[1])

max_id = 200000000
S1 = bitarray.bitarray(max_id)
S2 = bitarray.bitarray(max_id)
for id, type in gen(path):
    if type != 3 and type != 4:
        S1[id] = True
    else:
        S2[id] = True

print S1.count(), S2.count()
Run Code Online (Sandbox Code Playgroud)

虽然它给出了答案,但我认为它运行得有点慢.我该怎么做才能让它跑得更快?

编辑: 文件中有重复的记录.我只需要区分S1(类型1和类型2)和S2(类型3和类型4).例如,1440927 1并且 …

python performance bitarray

7
推荐指数
1
解决办法
193
查看次数

用于搜索连续置位/清零位的位数组的快速代码?

是否有一些相当快的代码可以帮助我快速搜索大的位图(几兆字节)运行连续的零或一位?

通过"合理快速",我的意思是可以利用机器字大小并同时比较整个单词,而不是进行逐点分析,这是非常慢的(例如一个人vector<bool>).

它对于例如在卷的位图中搜索可用空间(用于碎片整理等)非常有用.

c c++ bitarray bitvector

7
推荐指数
1
解决办法
1171
查看次数

将64位数组转换为Int64或ulong C#

我有一个int数组(长度总是64),如:

1110000100000110111001000001110010011000110011111100001011100100

我想把它写在一个Int64(或ulong?)变量中.怎么做?

我尝试创建一个BitArray然后获取int,但它抛出System.ArgumentException,在CopyTo行:

private static Int64 GetIntFromBitArray(BitArray bitArray) {
    var array = new Int64[1];
    bitArray.CopyTo(array, 0);
    return array[0];
}
Run Code Online (Sandbox Code Playgroud)

c# 64-bit bit-manipulation typeconverter bitarray

7
推荐指数
1
解决办法
3081
查看次数

安装 Web3 时“无法构建 bitarray cytoolz lru-dict”

在 Windows 10 中运行命令后 -python -m pip install web3出现以下错误 - “无法构建 bitarray cytoolz lru-dict”

我通过安装 Visual Studio Build Tools 2019 并运行命令解决了该问题 -python -m pip install python-dev-tools

为什么这个过程中需要 python-dev-tools ?

python bitarray web3py

7
推荐指数
1
解决办法
1849
查看次数