Compartir por


Funciones de manipulación de bits

Se aplica a: Sql Server 2022 (16.x) Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse en Microsoft Fabric

Las funciones de manipulación de bits, como mover, recuperar (obtener), establecer o contar bits individuales en un valor entero o binario, permiten procesar y almacenar datos de una forma más eficaz que con bits individuales.

Un bit tiene dos valores (1 o 0, que representan on o off, o true o false). Un byte se compone de una secuencia de 8 bits. Las funciones de manipulación de bits en SQL Server tratan el bit situado "más a la izquierda" en un byte como el más grande (el más significativo). Para las funciones de manipulación de bits, los bits se numeran de derecha a izquierda, donde el bit 0 está situado más a la derecha y es el más pequeño, y el bit 7 está situado más a la izquierda y es el más grande.

Por ejemplo, una secuencia binaria de 00000111 es el equivalente decimal del número 7. Esto se puede calcular con potencias de 2 de la siguiente manera:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

Lo que esto significa en la práctica es que, aunque SQL Server almacena este valor como 11100000 (byte invertido), las funciones de manipulación de bits lo tratarán como si fuera 00000111.

Al examinar varios bytes, el primer byte (leyendo de izquierda a derecha) es el mayor.

Puede usar las siguientes imágenes para visualizar la forma en la que las funciones de manipulación de bits de SQL Server interpretan los valores de expresión de bits y bytes, y los desplazamientos de bits.

int

Diagrama que muestra un valor int donde 4 bytes representan el binario invertido de cada byte de izquierda a derecha.

smallint

Diagrama que muestra un valor int pequeño donde el primer byte representa los bits 15-8 y el segundo byte representa los bits 7-0.

Functions

Hay cinco funciones disponibles para la manipulación de bits en SQL Server:

Las cinco funciones están diseñadas para operar con tipos de datos tinyint, smallint, int, bigint, binary(n) y varbinary(n).

No se admiten los siguientes tipos: varchar, nvarchar, image, ntext, text, xml y table.

Observaciones

En la implementación inicial, no se admitirá la funcionalidad de consulta distribuida para las funciones de manipulación de bits en el servidor vinculado ni en consultas ad hoc (OPENQUERY).