En esta página

QBitArray Class

La clase QBitArray proporciona una matriz de bits. Más...

Cabecera: #include <QBitArray>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Esta clase es igual-comparable.

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

QBitArray()
QBitArray(qsizetype size, bool value = false)
QBitArray(const QBitArray &other)
QBitArray(QBitArray &&other)
bool at(qsizetype i) const
const char *bits() const
void clear()
void clearBit(qsizetype i)
qsizetype count() const
qsizetype count(bool on) const
bool fill(bool value, qsizetype size = -1)
void fill(bool value, qsizetype begin, qsizetype end)
bool isEmpty() const
bool isNull() const
void resize(qsizetype size)
void setBit(qsizetype i)
void setBit(qsizetype i, bool value)
qsizetype size() const
void swap(QBitArray &other)
bool testBit(qsizetype i) const
(since 6.0) quint32 toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const
bool toggleBit(qsizetype i)
void truncate(qsizetype pos)
QBitArray &operator&=(QBitArray &&other)
QBitArray &operator&=(const QBitArray &other)
QBitArray &operator=(QBitArray &&other)
QBitArray &operator=(const QBitArray &other)
QBitRef operator[](qsizetype i)
bool operator[](qsizetype i) const
QBitArray &operator^=(QBitArray &&other)
QBitArray &operator^=(const QBitArray &other)
QBitArray &operator|=(QBitArray &&other)
QBitArray &operator|=(const QBitArray &other)

Miembros Públicos Estáticos

QBitArray fromBits(const char *data, qsizetype size)
bool operator!=(const QBitArray &lhs, const QBitArray &rhs)
QBitArray operator&(QBitArray &&a1, QBitArray &&a2)
QBitArray operator&(QBitArray &&a1, const QBitArray &a2)
QBitArray operator&(const QBitArray &a1, QBitArray &&a2)
QBitArray operator&(const QBitArray &a1, const QBitArray &a2)
QDataStream &operator<<(QDataStream &out, const QBitArray &ba)
bool operator==(const QBitArray &lhs, const QBitArray &rhs)
QDataStream &operator>>(QDataStream &in, QBitArray &ba)
QBitArray operator^(QBitArray &&a1, QBitArray &&a2)
QBitArray operator^(QBitArray &&a1, const QBitArray &a2)
QBitArray operator^(const QBitArray &a1, QBitArray &&a2)
QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
QBitArray operator|(QBitArray &&a1, QBitArray &&a2)
QBitArray operator|(QBitArray &&a1, const QBitArray &a2)
QBitArray operator|(const QBitArray &a1, QBitArray &&a2)
QBitArray operator|(const QBitArray &a1, const QBitArray &a2)
QBitArray operator~(QBitArray a)

Descripción detallada

Un QBitArray es un array que da acceso a bits individuales y proporciona operadores (AND, OR, XOR, y NOT) que trabajan sobre arrays enteros de bits. Utiliza la compartición implícita (copy-on-write) para reducir el uso de memoria y evitar la copia innecesaria de datos.

El siguiente código construye un QBitArray que contiene 200 bits inicializados a false (0):

QBitArray ba(200);

Para inicializar los bits a verdadero, pasa true como segundo argumento al constructor, o llama a fill() más tarde.

QBitArray utiliza índices basados en 0, como las matrices de C++. Para acceder al bit en una posición de índice concreta, puedes utilizar operator[](). En matrices de bits no-const, operator[]() devuelve una referencia a un bit que puede utilizarse en el lado izquierdo de una asignación. Por ejemplo:

QBitArray ba;
ba.resize(3);
ba[0] = true;
ba[1] = false;
ba[2] = true;

Por razones técnicas, es más eficiente utilizar testBit() y setBit() para acceder a los bits de la matriz que operator[](). Por ejemplo:

QBitArray ba(3);
ba.setBit(0, true);
ba.setBit(1, false);
ba.setBit(2, true);

QBitArray soporta & (AND), | (OR), ^ (XOR), ~ (NOT), así como &=, |=, y ^=. Estos operadores funcionan del mismo modo que los operadores bit a bit incorporados en C++ del mismo nombre. Por ejemplo:

QBitArray x(5);
x.setBit(3, true);
// x: [ 0, 0, 0, 1, 0 ]

QBitArray y(5);
y.setBit(4, true);
// y: [ 0, 0, 0, 0, 1 ]

x |= y;
// x: [ 0, 0, 0, 1, 1 ]

Por razones históricas, QBitArray distingue entre una matriz de bits nula y una matriz de bits vacía. Una matriz de bits nula es una matriz de bits que se inicializa utilizando el constructor por defecto de QBitArray. Una matriz de bits vacía es cualquier matriz de bits con tamaño 0. Una matriz de bits nula siempre está vacía, pero una matriz de bits vacía no es necesariamente nula:

QBitArray().isNull();           // returns true
QBitArray().isEmpty();          // returns true

QBitArray(0).isNull();          // returns false
QBitArray(0).isEmpty();         // returns true

QBitArray(3).isNull();          // returns false
QBitArray(3).isEmpty();         // returns false

Todas las funciones excepto isNull() tratan las matrices de bits nulas igual que las vacías; por ejemplo, QBitArray() compara igual a QBitArray(0). Se recomienda utilizar siempre isEmpty() y evitar isNull().

Véase también QByteArray y QList.

Documentación de las funciones miembro

[noexcept] QBitArray::QBitArray()

Construye una matriz de bits vacía.

Véase también isEmpty().

[explicit] QBitArray::QBitArray(qsizetype size, bool value = false)

Construye una matriz de bits que contiene size bits. Los bits se inicializan con value, que por defecto es falso (0).

[noexcept] QBitArray::QBitArray(const QBitArray &other)

Construye una copia de other.

Esta operación tarda un tiempo constante, porque QBitArray se comparte implícitamente. Esto hace que devolver un QBitArray desde una función sea muy rápido. Si se modifica una instancia compartida, se copiará (copy-on-write), y eso lleva un tiempo lineal.

Véase también operator=().

[noexcept] QBitArray::QBitArray(QBitArray &&other)

Move-construye una instancia de QBitArray, haciendo que apunte al mismo objeto al que apuntaba other.

bool QBitArray::at(qsizetype i) const

Devuelve el valor del bit en la posición de índice i.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Véase también operator[]().

const char *QBitArray::bits() const

Devuelve un puntero a una matriz de bits densa para este QBitArray. Los bits se cuentan hacia arriba desde el bit menos significativo de cada byte. El número de bits relevantes en el último byte viene dado por size() % 8.

Véase también fromBits() y size().

void QBitArray::clear()

Borra el contenido de la matriz de bits y la deja vacía.

Véase también resize() y isEmpty().

void QBitArray::clearBit(qsizetype i)

Pone a 0 el bit en la posición de índice i.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Véase también setBit() y toggleBit().

qsizetype QBitArray::count() const

Igual que size().

qsizetype QBitArray::count(bool on) const

Si on es verdadero, esta función devuelve el número de 1-bits almacenados en la matriz de bits; en caso contrario, se devuelve el número de 0-bits.

bool QBitArray::fill(bool value, qsizetype size = -1)

Establece cada bit de la matriz de bits en value, devolviendo true si tiene éxito; en caso contrario devuelve false. Si size es diferente de -1 (por defecto), la matriz de bits se redimensiona previamente a size.

Ejemplo:

QBitArray ba(8);
ba.fill(true);
// ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]

ba.fill(false, 2);
// ba: [ 0, 0 ]

Véase también resize().

void QBitArray::fill(bool value, qsizetype begin, qsizetype end)

Establece bits en las posiciones de índice begin hasta (pero sin incluir) end a value.

begin debe ser una posición de índice válida en la matriz de bits (0 <= begin < size()).

end debe ser una posición de índice válida o igual a size(), en cuyo caso la operación de llenado se ejecuta hasta el final de la matriz (0 <= end <= size()).

Ejemplo:

QBitArray ba(4);
ba.fill(true, 1, 2);            // ba: [ 0, 1, 0, 0 ]
ba.fill(true, 1, 3);            // ba: [ 0, 1, 1, 0 ]
ba.fill(true, 1, 4);            // ba: [ 0, 1, 1, 1 ]

Esta es una función sobrecargada.

[static] QBitArray QBitArray::fromBits(const char *data, qsizetype size)

Crea un QBitArray con la matriz de bits densa situada en data, con size bits. La matriz de bytes en data debe tener al menos size / 8 (redondeado hacia arriba) bytes de longitud.

Si size no es múltiplo de 8, esta función incluirá los size % 8 bits más bajos del último byte en data.

Véase también bits().

bool QBitArray::isEmpty() const

Devuelve true si esta matriz de bits tiene tamaño 0; en caso contrario devuelve false.

Véase también size().

bool QBitArray::isNull() const

Devuelve true si esta matriz de bits es nula; en caso contrario devuelve false.

Ejemplo:

QBitArray().isNull();           // returns true
QBitArray(0).isNull();          // returns false
QBitArray(3).isNull();          // returns false

Qt distingue entre matrices de bits nulas y vacías por razones históricas. Para la mayoría de las aplicaciones, lo que importa es si una matriz de bits contiene o no algún dato, y esto puede determinarse usando isEmpty().

Véase también isEmpty().

void QBitArray::resize(qsizetype size)

Redimensiona la matriz de bits a size bits.

Si size es mayor que el tamaño actual, la matriz de bits se amplía para que sea size bits con los bits adicionales añadidos al final. Los nuevos bits se inicializan a false (0).

Si size es menor que el tamaño actual, se eliminan los bits del final.

Véase también size().

void QBitArray::setBit(qsizetype i)

Pone a 1 el bit en la posición de índice i.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Véase también clearBit() y toggleBit().

void QBitArray::setBit(qsizetype i, bool value)

Establece el bit en la posición de índice i a value.

Se trata de una función sobrecargada.

qsizetype QBitArray::size() const

Devuelve el número de bits almacenados en la matriz de bits.

Véase también resize().

[noexcept] void QBitArray::swap(QBitArray &other)

Intercambia esta matriz de bits con other. Esta operación es muy rápida y nunca falla.

bool QBitArray::testBit(qsizetype i) const

Devuelve true si el bit en la posición de índice i es 1; en caso contrario devuelve false.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Véase también setBit() y clearBit().

[noexcept, since 6.0] quint32 QBitArray::toUInt32(QSysInfo::Endian endianness, bool *ok = nullptr) const

Devuelve la matriz de bits convertida a un int. La conversión se basa en endianness. Convierte hasta los primeros 32 bits del array a quint32 y lo devuelve, obedeciendo a endianness. Si ok no es un puntero nulo, y el array tiene más de 32 bits, ok se pone a false y esta función devuelve cero; en caso contrario, se pone a true.

Esta función se introdujo en Qt 6.0.

bool QBitArray::toggleBit(qsizetype i)

Invierte el valor del bit en la posición del índice i, devolviendo el valor anterior de ese bit como verdadero (si estaba activado) o falso (si estaba desactivado).

Si el valor anterior era 0, el nuevo valor será 1. Si el valor anterior era 1, el nuevo valor será 0.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Véase también setBit() y clearBit().

void QBitArray::truncate(qsizetype pos)

Trunca la matriz de bits en la posición de índice pos.

Si pos está más allá del final de la matriz, no ocurre nada.

Véase también resize().

QBitArray &QBitArray::operator&=(const QBitArray &other)

QBitArray &QBitArray::operator&=(QBitArray &&other)

Realiza la operación AND entre todos los bits de esta matriz de bits y other. Asigna el resultado a esta matriz de bits y devuelve una referencia a ella.

El resultado tiene la longitud de la más larga de las dos matrices de bits, y cualquier bit que falte (si una matriz es más corta que la otra) se toma como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a &= b;                         // a: [ 1, 0, 0 ]

Véase también operator&(), operator|=(), operator^=() y operator~().

[noexcept] QBitArray &QBitArray::operator=(QBitArray &&other)

Mueve other a esta matriz de bits y devuelve una referencia a esta matriz de bits.

[noexcept] QBitArray &QBitArray::operator=(const QBitArray &other)

Asigna other a esta matriz de bits y devuelve una referencia a esta matriz de bits.

QBitRef QBitArray::operator[](qsizetype i)

Devuelve el bit en la posición de índice i como una referencia modificable.

i debe ser una posición de índice válida en la matriz de bits (es decir, 0 <= i < size()).

Ejemplo:

QBitArray a(3);
a[0] = false;
a[1] = true;
a[2] = a[0] ^ a[1];

El valor de retorno es de tipo QBitRef, una clase auxiliar para QBitArray. Cuando se obtiene un objeto de tipo QBitRef, se le puede asignar, y la asignación se aplicará al bit de QBitArray del que se obtuvo la referencia.

Las funciones testBit(), setBit(), y clearBit() son ligeramente más rápidas.

Véase también at(), testBit(), setBit(), y clearBit().

bool QBitArray::operator[](qsizetype i) const

Se trata de una función sobrecargada.

QBitArray &QBitArray::operator^=(const QBitArray &other)

QBitArray &QBitArray::operator^=(QBitArray &&other)

Realiza la operación XOR entre todos los bits de esta matriz de bits y other. Asigna el resultado a esta matriz de bits y devuelve una referencia a ella.

El resultado tiene la longitud de la más larga de las dos matrices de bits, y los bits que faltan (si una matriz es más corta que la otra) se toman como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a ^= b;                         // a: [ 0, 1, 1 ]

Véase también operator^(), operator&=(), operator|=() y operator~().

QBitArray &QBitArray::operator|=(const QBitArray &other)

QBitArray &QBitArray::operator|=(QBitArray &&other)

Realiza la operación OR entre todos los bits de esta matriz de bits y other. Asigna el resultado a esta matriz de bits y devuelve una referencia a ella.

El resultado tiene la longitud de la más larga de las dos matrices de bits, y cualquier bit que falte (si una matriz es más corta que la otra) se toma como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
a |= b;                         // a: [ 1, 1, 1 ]

Véase también operator|(), operator&=(), operator^=() y operator~().

No miembros relacionados

[noexcept] bool operator!=(const QBitArray &lhs, const QBitArray &rhs)

Devuelve true si lhs no es igual a la matriz de bits rhs; en caso contrario devuelve false.

Véase también operator==().

QBitArray operator&(const QBitArray &a1, const QBitArray &a2)

QBitArray operator&(QBitArray &&a1, const QBitArray &a2)

QBitArray operator&(const QBitArray &a1, QBitArray &&a2)

QBitArray operator&(QBitArray &&a1, QBitArray &&a2)

Devuelve una matriz de bits que es la AND de las matrices de bits a1 y a2.

El resultado tiene la longitud de la más larga de las dos matrices de bits, con los bits que faltan (si una matriz es más corta que la otra) tomados como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a & b;                      // c: [ 1, 0, 0 ]

Véase también operator&=(), operator|() y operator^().

QDataStream &operator<<(QDataStream &out, const QBitArray &ba)

Escribe la matriz de bits ba en el flujo out.

Véase también Formato de los operadores QDataStream.

[noexcept] bool operator==(const QBitArray &lhs, const QBitArray &rhs)

Devuelve true si lhs es igual a la matriz de bits rhs; en caso contrario devuelve false.

Véase también operator!=().

QDataStream &operator>>(QDataStream &in, QBitArray &ba)

Lee un array de bits en ba desde el stream in.

Véase también Formato de los operadores QDataStream.

QBitArray operator^(const QBitArray &a1, const QBitArray &a2)

QBitArray operator^(QBitArray &&a1, const QBitArray &a2)

QBitArray operator^(const QBitArray &a1, QBitArray &&a2)

QBitArray operator^(QBitArray &&a1, QBitArray &&a2)

Devuelve una matriz de bits que es el XOR de las matrices de bits a1 y a2.

El resultado tiene la longitud de la más larga de las dos matrices de bits, con los bits que faltan (si una matriz es más corta que la otra) tomados como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a ^ b;                      // c: [ 0, 1, 1 ]

Véase también operator^=().

QBitArray operator|(const QBitArray &a1, const QBitArray &a2)

QBitArray operator|(QBitArray &&a1, const QBitArray &a2)

QBitArray operator|(const QBitArray &a1, QBitArray &&a2)

QBitArray operator|(QBitArray &&a1, QBitArray &&a2)

Devuelve una matriz de bits que es el OR de las matrices de bits a1 y a2.

El resultado tiene la longitud de la más larga de las dos matrices de bits, con los bits que faltan (si una matriz es más corta que la otra) tomados como 0.

Ejemplo:

QBitArray a(3);
QBitArray b(2);
QBitArray c;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b[0] = 1; b[1] = 1;             // b: [ 1, 1 ]
c = a | b;                      // c: [ 1, 1, 1 ]

Véase también QBitArray::operator|=(), operator&() y operator^().

QBitArray operator~(QBitArray a)

Devuelve una matriz de bits que contiene los bits invertidos de la matriz de bits a.

Ejemplo:

QBitArray a(3);
QBitArray b;
a[0] = 1; a[1] = 0; a[2] = 1;   // a: [ 1, 0, 1 ]
b = ~a;                         // b: [ 0, 1, 0 ]

Véase también operator&(), operator|(), y operator^().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.