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 |
- Lista de todos los miembros, incluyendo los heredados
- QBitArray es parte de Clases Implícitamente Compartidas.
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) |
No Miembros Relacionados
| 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:
© 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.