标签: bitset

擦除位集中各个位的最有效方法是什么?是XOR还是AND/NOT?

我有一个很大的位,我想经常重置其中的各个位.哪种方法更快?

一个) bitset[word_index] ^= 1 << bit_index

要么

b) bitset[word_index] &= ~(1 << bit_index)

该应用程序适用于桌面(如果它起作用).

binary xor bitset

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

将BitSet设置为基本类型?

在Java中,您可以创建一个大小为8的BitSet并将其存储为一个字节以便输出吗?BitSets上的文档没有提到它.这是不是意味着什么?

java object primitive-types bitset

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

小尺寸的java.util.BitSet替代?

java.util.BitSet由long []支持,因此最小大小为64位.我需要缓存大量(~2M)的对象,每个对象都需要一个大小为23的BitSet.对于小尺寸,BitSet是否有更多的空间效率?例如,是否有一个BitSet类型的数据结构,由byte []而不是long []支持?这将允许我将我的23位存储在3个字节而不是8个字节中.

java collections bitset

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

Java 32位系统BitSets的内存大小

如何计算new BitSet(n) C++中的内存.

Java中有什么内存new BitSet(1024).

但似乎Java的公式是不同的.我想计算用于的内存new BitSet(100000),请你帮忙吗?

java memory bitset

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

BitSet,没有containsAll,最好的解决方法?

我只是惊讶地发现,java.util.BitSet没有containsAll方法.我需要的是以下内容:

BitSet s1 = newBitSet(1, 2, 3, 4, 6);
BitSet s2 = newBitSet(1, 2, 3, 4);
BitSet s3 = newBitSet(1, 2, 3, 4, 5);
assertTrue(containsAll(s1, s2));
assertFalse(containsAll(s1, s3));

private static BitSet newBitSet(int... values) {
    BitSet bitSet = new BitSet();
    for (int value : values) {
        bitSet.set(value);
    }
    return bitSet;
}
Run Code Online (Sandbox Code Playgroud)

实现containsAll方法的最佳变体是什么?有没有比这样迭代更优雅的方式?(从JavaDoc获取的wird迭代代码)

private static boolean containsAll(BitSet s1, BitSet s2) {
    for (int i = s2.nextSetBit(0); i >= 0; i = s2.nextSetBit(i + 1)) {
        if …
Run Code Online (Sandbox Code Playgroud)

java bitset

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

无符号整数中的C++按位补码返回负值

我只是尝试使用~运算符在C++中进行按位补码:

例如:

NOT 0101
--------
    1010
Run Code Online (Sandbox Code Playgroud)

所以在下面的代码中,我期待得到1010但我得到负数.虽然我用unsigned类型定义值,但是怎么可能?

#include <iostream>
#include <stdio.h>
#include <string>
#include <bitset>
using namespace std;

int tob(int num) {
    if (num == 0)
        return 0;
    return (num % 2) + 10*tob(num/2);
}

long unsigned int tol(string st) {
    long unsigned int num = bitset<100>(st).to_ulong();
    return num;
}


int main()
{
    unsigned int x = tol("0101");
    unsigned int z = ~x;
    printf("%10d (decimal %u)\n", tob(z), z);
    // -110 (decimal -6)
    cout << …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation bitwise-operators bitset long-integer

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

使用模板定义位集的大小

我有一堂课

template <class MAX> 
class A 
{
   std::bitset<MAX> _mem ; 
}
Run Code Online (Sandbox Code Playgroud)

此类的目的是使我可以拥有可变长度的位集。在我程序的不同部分中使用。

但是c完成给我错误

template argument for non type template parameter should be an expression
Run Code Online (Sandbox Code Playgroud)

c++ templates bitset

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

在java中创建特定长度的BitSet

我有一个函数,我想在其中执行OR,AND,set等操作.我首先考虑了一个布尔数组,但问题是我无法对它们执行AND和OR运算(但我可以将特定元素设置为true).我也试过使用BiSet,但问题是BitSet的最小尺寸是64(位).我希望它存储一个特定数量的位(例如15个),我可以从中迭代以获取它们的包含.在C#中,有BitArray类来处理这样的问题; Java似乎没有这样的.任何有关此问题的建议都将受到高度赞赏

c# java bitset

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

如何使用位操作在单个整数中编码和解码两个数字?

我正在学习有点操作然后我想到了这一点.假设我有两个数字,第一个在[1,6]的范围内,第二个在[0,3]的范围内.现在第一个数字可以存储最多3个比特,第二个数字可以存储2个比特.我如何使用一个int32将它们都存储在其中.谢谢.

c++ bits bitset

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

C++ 11模板函数"隐含"将bitset <N>转换为"unsigned long"

我可以创建一个C++ 11模板函数来显式地将bitset转换为unsigned long:

template<size_t N>
unsigned long U(bitset<N> x) {
    return x.to_ulong();
}

// Explicit conversion
unsigned long y = U(bitset<4>("1010"));
Run Code Online (Sandbox Code Playgroud)

有没有办法使用C++ 11模板帮助函数"隐式"将bitset转换为unsigned long.例如,如果我将一个bitset分配给unsigned long,那么我希望它自动将bitset转换为正确的类型:

// What Template Function in C++11?

// Implicit Conversion
unsigned long z = bitset<4>("1010");
Run Code Online (Sandbox Code Playgroud)

(如果不可能使用C++ 11模板函数创建一个隐式转换规则转换为"unsigned long",那么从bitset派生一个具有转换函数到unsigned long的新类也是可以接受的.这也可能吗? )

c++ bitset c++11

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