Condividi tramite


~ (NOT bit per bit) (Analisi di flusso di Azure)

Esegue un'operazione con NOT logico bit per bit su un valore integer.

Sintassi

~ expression

Argomenti

expression

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 il valore di input è bit.

bigint se il valore di input è bigint.

Commenti

L'operatore ~ bit per bit esegue un NOT logico bit per bit sull'espressione, accettando ogni bit a sua volta. Se il valore di expression è 0, i bit nel set dei risultati vengono impostati su 1. In caso contrario, il bit nel risultato viene cancellato e impostato sul valore 0. In altre parole, i bit a uno vengono cambiati in zero e i bit a zero vengono modificati in uno.

Ad esempio, la rappresentazione binaria di 170 è 0000 0000 1010 1010. L'esecuzione dell'operazione NOT bit per bit su questo valore produce il risultato binario 1111 1111 0101 0101, ovvero decimale -171.

(~170)
0000 0000 1010 1010
-------------------
1111 1111 0101 0101

Esempio

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 AS NOT0,
	~ bit1 AS NOT1,
	~ bitN AS NOTnull
INTO bitNOT
FROM MyCTE

Restituisce:

bit0 bit1 bitN NOT0 NOT1 NOTnull
false true NULL true false NULL

Applicazione dell'operatore alle espressioni bigint :

SELECT
	bigint0,
	bigint1,
	bigintN,
	~ bigint0 AS NOT0,
	~ bigint1 AS NOT1,
	~ bigintN AS NOTnull,
	~ 170 AS NOT170
INTO bigintNOT
FROM MyCTE

Restituisce:

bit0 bit1 bitN NOT0 NOT1 NOTnull NOT170
0 1 NULL -1 -2 NULL -171

Convalida dei tipi di output:

SELECT
	GetType(~ bit0) AS NOTtype_bit,
	GetType(~ bigint0) AS NOTtype_bigint
INTO typesNOT
FROM MyCTE

Restituisce:

NOTtype_bit NOTtype_bigint
bit bigint

Vedere anche