为什么选择2^3在SQL Server中返回1?
可能重复:为什么选择2^3在SQL Server中返回1?,sql,sql-server,tsql,bitwise-operators,Sql,Sql Server,Tsql,Bitwise Operators,可能重复: 为什么选择2^3在SQL Server中返回1 上面是我遇到的一个面试问题,我不明白为什么它返回1 在谷歌搜索了一下之后,我发现它是一个按位运算符。但我仍然不明白为什么1是一个输出 我有查询、存储过程和T-SQL的基本知识。谁能给我解释一下: 如何在SELECT 2^3中获得1 这些操作员的实际用途是什么 如果有实际用途,那么使用此类运算符时的最佳实践是什么,因为^is运算符 异或真值表 ------- |^|1|0| ------- |1|0|1| ------- |0|1|0|
为什么选择2^3在SQL Server中返回1 上面是我遇到的一个面试问题,我不明白为什么它返回1 在谷歌搜索了一下之后,我发现它是一个按位运算符。但我仍然不明白为什么1是一个输出 我有查询、存储过程和T-SQL的基本知识。谁能给我解释一下:
-------
|^|1|0|
-------
|1|0|1|
-------
|0|1|0|
-------
换句话说,在结果中,只有当两个位不同时,我们才有一个
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
对你来说,这是最好的选择
binary - decimal
00010 - 2
00011 - 3
---------- ^
00001 - 1
更多关于
用法
例如()处理或加密
a b a^b
-------
0 0 0
0 1 1
1 0 1
1 1 0
2 0b10
3 0b11
--------
2^3 0b01 = 1
真正的实际用途是在用作标志时切换位。似乎需要使用“电源”功能:)
2 in binary = 10
3 in binary = 11
^ bitwise (XOR)
10 XOR 11 = 01
01 binary = 1 in decimal
权力
将给定表达式的值返回到指定的幂
语法
幂(数值_表达式,y)
返回8
PS:当您想将某些数字字段解释为“掩码”数据并使用数字中的位执行操作时,需要使用^operator(和其他位运算符)。它是按位异或 OR和XOR(异或)的真值表是不同的。或表示“如果这些输入中的任何一个为真,则输出为真”。XOR表示“如果一个或另一个输入为真,但不是两个输入都为真,则输出为真” 或真值表: 假或假=假 真或假=真 假或真=真 真或真=真 异或真值表: 假异或假=假 真异或假=真 假异或真=真 真异或真=假 因此,查询所做的是将每个输入转换为二进制,然后对每个位执行XOR。 2^3:
不知道为什么,但是
选择POW(2,3)
应该给你8
!在哪些场景中使用它们以及它们如何影响查询的性能,在哪些场景中使用它们以及它们的备选方案(如果有的话)。当您想要切换用作标志的位时,或者当您想要实现使用它的某些算法时,使用它们。除此之外,您可以忽略它。不,它不是“选择电源(2,3)”。它是“选择2^3”。然后确定。通常一些学生会尝试使用“^”而不是“power”,所以我只是认为是它。:)我记得XOR是如果两个输入相同,则为false,否则为true
;如果两个输入都为false,则为false,否则为true;)
select power(2, 3)
00000010 (2)
XOR
00000011 (3)
=
00000001