这段代码:
BitArray bits = new BitArray(new byte[] { 7 });
foreach (bool bit in bits)
{
Console.WriteLine(bit ? 1 : 0);
}
Run Code Online (Sandbox Code Playgroud)
给我以下输出:
11100000
Run Code Online (Sandbox Code Playgroud)
不应该是相反的方式吗?像这样:
00000111
Run Code Online (Sandbox Code Playgroud)
我知道有一点点大端,虽然这些术语只涉及字节的位置.据我所知,它们不会影响比特.
是否有任何预定义功能可用于转换byte为BitArray?
一种方法是检查byte值的每一位,然后执行按位运算.我想知道是否有任何比这更简单的方法.
iOS/Objective-C:我有一大堆布尔值.
这是存储这些值的低效方法 - 当只需要一个时,每个元素至少使用8位.
我该如何优化?
在C++中存储位数组的最佳方法是什么(没有Boost,只是标准容器),例如,表示卷分配位图?
我认为这std::vector<bool>是一个好主意,但显然它是邪恶和弃用,所以有更好的选择吗?
如果我在内存中有一个字节数组,我该如何将它们复制到推荐的容器中?
(我很难搞清楚这一点vector<bool>.)
我期待在这里找到一个关于这个的现有问题,但我没有.
Bitarray当你可以将bool值存储在一个时,使用a有什么好处bool[]?
System.Collections.BitArray biArray = new System.Collections.BitArray(8);
biArray[4] = true;
bool[] boArray = new bool[8];
boArray[4] = true;
Run Code Online (Sandbox Code Playgroud)
的bool[],因为存在更多的(扩展)方法以数组,而不是一个工作似乎有点更加得心应手给我BitArray
我实际上有一个问题的答案,但它没有并行化,所以我对改进算法的方法很感兴趣.无论如何,它对某些人来说可能是有用的.
int Until = 20000000;
BitArray PrimeBits = new BitArray(Until, true);
/*
* Sieve of Eratosthenes
* PrimeBits is a simple BitArray where all bit is an integer
* and we mark composite numbers as false
*/
PrimeBits.Set(0, false); // You don't actually need this, just
PrimeBits.Set(1, false); // remindig you that 2 is the smallest prime
for (int P = 2; P < (int)Math.Sqrt(Until) + 1; P++)
if (PrimeBits.Get(P))
// These are going to be the multiples of P …Run Code Online (Sandbox Code Playgroud) 我有一个特殊的需求,最重要的问题是:
这是我的"问题":我需要在内存中存储大量非常稀疏的位数组.这些位集仅"附加",主要用于交叉点.通过巨大的,我的意思是高达200 000位阵列.
每个位组的范围应在[0 ... 16 000 000]之间.
我用"仅"10个673位数组运行了一些预测试,其中包含了我得到的一些实际数据并得到了以下结果:
1% of the bit arrays ( 106 bit arrays) Hamming weight: at most 1 bit set
5% of the bit arrays ( 534 bit arrays) Hamming weight: at most 4 bits set
10% of the bit arrays ( 1068 bit arrays) Hamming weight: at most 8 bits set
15% of the bit arrays ( 1603 bit arrays) Hamming weight: at most 12 bits set
20% of the bit …Run Code Online (Sandbox Code Playgroud) 在努力使.NET BitArray类能够满足我的需求之后,我决定在网络上寻找更强大的开源或商业类.令我惊讶的是,我找不到一个.我看到了有关扩展方法的各种建议或解决BitArray功能限制的方法,但没有类似于BitArray的替代品.
我们是通过扩展或更换BitArray来重新发明轮子吗?
理想情况下,替换将具有部分/全部这些功能:
实现IList<bool>而不仅仅是ICollection.
可以转换为各种其他类型,如int(最多32位BitArrays),bool(一位BitArrays),double等.
实现产生字节数组的ToArray类型的方法.它可以参数化为字节序.由于BitArray可以从构造函数中的字节数组参数构造,因此能够将其返回到字节数组似乎是一个很好的闭包.
能够从中提取子BitArrays.例如,从111101这样的数组中,您可以提取位1到4,从而产生新的BitArray 1110.
位移运算符.
处理无限长度的位(就像BitArray那样),但是仍然可以转换为像int这样的有限类型,就像你知道它适合你可以将long转换为int一样.
?__我打赌人们的愿望清单上还有很多其他项目.
你知道那里有任何开源或商业实现吗?如果它是开源的,那么拥有Apache,MIT或Ms-Pl等非互易许可证会很不错.
我有以下内容:
int num=Integer.parseInt(lineArray[0]);
byte numBit= num & 0xFF;
Run Code Online (Sandbox Code Playgroud)
有没有非常简单的方法转换numBit为位数组?或者更好的是,有没有办法绕过int的字节转换并直接从num位数组?
谢谢
假设我使用以下代码在python中定义了一些bitarray:
from bitarray import bitarray
d=bitarray('0'*30)
d[5]=1
Run Code Online (Sandbox Code Playgroud)
如何将d转换为整数表示?另外,如何d&(d+1)使用bitarrays 进行操作?
bitarray ×10
c# ×5
algorithm ×2
.net ×1
bitmap ×1
boolean ×1
byte ×1
c ×1
c++ ×1
compression ×1
containers ×1
enumeration ×1
generics ×1
in-memory ×1
ios ×1
java ×1
objective-c ×1
performance ×1
python ×1
stl ×1
wpf ×1