Condividi tramite


& (AND a livello di bit)

✅ Flusso di eventi dell'infrastruttura di Analisi ✅ di flusso di Azure

Esegue un'operazione AND logica bit per bit tra due valori interi, valutando ogni bit corrispondente da entrambe le espressioni.

Sintassi

expression & expression

Argomenti

di espressione

Qualsiasi espressione valida dei tipi di dati bit o bigint. L'espressione viene considerata come un numero binario per l'operazione bit per bit.

Tipi restituiti

bit se entrambi i valori di input sono bit.

bigint se uno o entrambi i valori di input sono bigint.

Osservazioni:

L'operatore bit per bit esegue un AND logico bit per bit tra le due espressioni, prendendo ogni bit corrispondente per entrambe le espressioni. I bit nel risultato vengono impostati su 1 se e solo se entrambi i bit (per il bit corrente da risolvere) nelle espressioni di input hanno un valore pari a 1; in caso contrario, il bit nel risultato è impostato su 0.

Ad esempio, la rappresentazione binaria di 170 è 0000 0000 1010 1010. La rappresentazione binaria di 75 è 0000 0000 0100 1011. L'esecuzione dell'operazione AND bit per bit su questi due valori produce il risultato binario 0000 0000 0000 1010, ovvero decimale 10.

(170 & 75)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010

Si noti che il cast di un valore FLOAT a BIGINT e l'applicazione di un operatore bit per bit su di esso spesso non restituirà lo stesso risultato del cast a BIT e l'applicazione dello stesso operatore:

  • Prima opzione: 170 & 75,0 = 170 & 75 => 10
  • Seconda opzione: 170 & 75,0 => 170 & 1 = 0

Vedere Panoramica dei tipi di dati per le regole di conversione in bit.

Esempi

Con un set di dati di input comune:

WITH MyCTE AS (
	SELECT
		CAST(0 AS BIT) AS bit0,
		CAST(1 AS BIT) AS bit1,
		CAST(NULL AS BIT) AS bitN,
		CAST(0 AS BIGINT) AS bigint0,
		CAST(1 AS BIGINT) AS bigint1,
		CAST(NULL AS BIGINT) AS bigintN
	FROM input
)

Applicazione dell'operatore alle espressioni di bit :

SELECT
	bit0,
	bit1,
	bitN,
	bit0 & bit0 AS AND00,
	bit0 & bit1 AS AND01,
	bit1 & bit0 AS AND10,
	bit1 & bit1 AS AND11,
	bitN & bit0 AS ANDnull
INTO bitAND
FROM MyCTE

Restituisce:

bit0 bit1 bitN AND00 AND01 AND10 AND11 ANDnull
falso vero NULLO falso falso falso vero NULLO

Applicazione dell'operatore alle espressioni bigint :

SELECT
	bigint0,
	bigint1,
	bigintN,
	bigint0 & bigint0 AS AND00,
	bigint0 & bigint1 AS AND01,
	bigint1 & bigint0 AS AND10,
	bigint1 & bigint1 AS AND11,
	bigintN & bigint1 AS ANDnull,
    170 & 75 AS ANDvalues
INTO bigintAND
FROM MyCTE

Restituisce:

bigint0 bigint1 bigintN AND00 AND01 AND10 AND11 ANDnull ANDvalues
0 1 NULLO 0 0 0 1 NULLO 10

Convalida dei tipi di output:

SELECT
    GetType(bit0 & bit0) AS ANDtype_bit,
    GetType(bigint0 & bigint0) AS ANDtype_bigint,
    GetType(bit0 & bigint0) AS ANDtype_mixed
INTO typesAND
FROM MyCTE

Restituisce:

ANDtype_bit ANDtype_bigint ANDtype_mixed
pezzo bigint bigint

Vedere anche