^(位异或)(Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 中的 SQL 终结点 Microsoft Fabric 中的仓库 Microsoft Fabric SQL 数据库
在两个整数值之间执行“位异或”运算。
语法
expression ^ expression
参数
expression
整数数据类型类别中的任何一种数据类型、bit、binary 或 varbinary 数据类型的任何有效的表达式 。 对于位运算,expression 被视为二进制数字。
注意
位运算中,只有一个 expression 可以是 binary 或 varbinary 数据类型 。
结果类型
如果输入值为 int,则结果为 int 。
如果输入值为 smallint,则结果为 smallint 。
如果输入值为 tinyint,则结果为 tinyint 。
备注
通过从两个表达式中取对应的位,^ 位运算符对两个表达式执行按位逻辑异或运算。 如果在输入表达式的正在被解析的对应位中,任意一位(但不是两个位)的值为 1,则结果中该位的值被设置为 1。 如果相对应的两个位的值都为 0 或者都为 1,那么结果中该位的值被清除为 0。
如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的表达式的数据类型为 smallint,右侧的表达式的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。 在本例中,smallint 表达式转换为 int。
示例
以下示例创建一个表,其中使用 int 数据类型存储原始值,并将两个值插入一行。
CREATE TABLE bitwise (
a_int_value INT NOT NULL,
b_int_value INT NOT NULL);
GO
INSERT bitwise VALUES (170, 75);
GO
下面的查询对 a_int_value
和 b_int_value
列执行位异或运算。
SELECT a_int_value ^ b_int_value
FROM bitwise;
GO
下面是结果集:
-----------
225
(1 row(s) affected)
170(a_int_value
或 A
)的二进制表示形式是 0000 0000 1010 1010
。 75(b_int_value
或 B
)的二进制表示形式是 0000 0000 0100 1011
。 在这两个值之间执行位异或运算所产生的二进制结果是 0000 0000 1110 0001
,即十进制数 225。
(A ^ B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 0001
另请参阅
表达式(Transact-SQL)
运算符 (Transact-SQL)
位运算符 (Transact-SQL)
^=(位异或赋值)(Transact-SQL)
复合运算符 (Transact-SQL)